程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Tab Ctrl

Tab Ctrl

編輯:關於C語言

 

Tab屬性頁控件可以在一個窗口中添加不同的頁面,然後在頁選擇發生改變時得到通知。MFC中使用CTabCtrl類來封裝屬性頁控件的各種操作。通過調用
BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );創建一個窗口,dwStyle中可以使用以下一些屬性頁控件的專用風格:

  • TCS_BUTTONS 使用按鈕來表示頁選擇位置
  • TCS_MULTILINE 分行顯示頁選擇位置
  • TCS_SINGLELINE 只使用一行顯示頁選擇位置

在控件創建後必需向其中添加頁面才可以使用,添加頁面的函數為:
BOOL InsertItem( int nItem, LPCTSTR lpszItem );nItem為位置,從零開始,lpszItem為頁選擇位置上顯示的文字。如果你希望在頁選擇位置處顯示一個圖標,你可以調用
BOOL InsertItem( int nItem, LPCTSTR lpszItem, int nImage );nImage指明所使用的圖片位置。(在此之前必須調用CImageList * SetImageList( CImageList * pImageList );設置正確的ImageList)

此外CTabCtrl還提供了一些函數用於得到/修改控件的狀態。
int GetCurSel( )/int SetCurSel( int nItem );用於得到/設置當前被選中的頁位置。
BOOL DeleteItem( int nItem )/BOOL DeleteAllItems( );用於刪除指定/所有頁面。
void RemoveImage( int nImage );用於刪除某頁選擇位置上的圖標。

屬性頁控件的消息映射同樣使用ON_NOTIFY宏,形式如同:ON_NOTIFY( wNotifyCode, id, memberFxn ),wNotifyCode為通知代碼,id為產生該消息的窗口ID,memberFxn為處理函數,函數的原型如同void OnXXXTab(NMHDR* pNMHDR, LRESULT* pResult),其中pNMHDR為一數據結構,在具體使用時需要轉換成其他類型的結構。對於列表控件可能取值和對應的數據結構為:

  • TCN_SELCHANGE 在當前頁改變後發送,所用結構:NMHDR
  • TCN_SELCHANGING 在當前頁改變時發送可以通過返回TRUE來禁止頁面的改變,所用結構:NMHDR

一般來講在當前頁發生改變時需要隱藏當前的一些子窗口,並顯示其它的子窗口。下面的偽代碼演示了如何使用屬性頁控件:

CParentWnd::OnCreate(...)
{
         m_tab.Create(...);
         m_tab.InsertItem(0,"Option 1");
         m_tab.InsertItem(1,"Option 2");
         Create a edit box as the m_tabs Child
         Create a static box as the m_tabs Child
         edit_box.ShowWindow(SW_SHOW); // edit box在屬性頁的第一頁
         static_box.ShowWindow(SW_HIDE); // static box在屬性頁的第二頁
}
void CParentWnd::OnSelectChangeTab(NMHDR* pNMHDR, LRESULT* pResult)
{//處理頁選擇改變後的消息
         if(m_tab.GetCurSel()==0)
         {//根據當前頁顯示/隱藏不同的子窗口
                 edit_box.ShowWindow(SW_SHOW);
    						

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved