国产黄色免费网站,人人干人人干人人干,免费大黄网站在线看,国产情侣一区二区三区,99精品国产福利免费一区二区,国产亚洲成归v人片在线观看,伊人88

2023信創(chuàng)獨(dú)角獸企業(yè)100強(qiáng)
全世界各行各業(yè)聯(lián)合起來,internet一定要實(shí)現(xiàn)!

VC++之Tab Ctrl控件

2004-02-10 eNet&Ciweek

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

  TCS_BUTTONS 使用按鈕來表示頁選擇位置

  TCS_MULTILINE 分行顯示頁選擇位置

  TCS_SINGLELINE 只使用一行顯示頁選擇位置

  在控件創(chuàng)建后必需向其中添加頁面才可以使用,添加頁面的函數(shù)為:

  BOOL InsertItem( int nItem, LPCTSTR lpszItem );nItem為位置,從零開始,lpszItem為頁選擇位置上顯示的文字。如果你希望在頁選擇位置處顯示一個(gè)圖標(biāo),你可以調(diào)用BOOL InsertItem( int nItem, LPCTSTR lpszItem, int nImage );nImage指明所使用的圖片位置。(在此之前必須調(diào)用CImageList * SetImageList( CImageList * pImageList );設(shè)置正確的ImageList)

  

  此外CTabCtrl還提供了一些函數(shù)用于得到/修改控件的狀態(tài)。

  int GetCurSel( )/int SetCurSel( int nItem );用于得到/設(shè)置當(dāng)前被選中的頁位置。

  BOOL DeleteItem( int nItem )/BOOL DeleteAllItems( );用于刪除指定/所有頁面。

  void RemoveImage( int nImage );用于刪除某頁選擇位置上的圖標(biāo)。

  

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

  

  TCN_SELCHANGE 在當(dāng)前頁改變后發(fā)送,所用結(jié)構(gòu):NMHDR

  TCN_SELCHANGING 在當(dāng)前頁改變時(shí)發(fā)送可以通過返回TRUE來禁止頁面的改變,所用結(jié)構(gòu):NMHDR

  

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

  

  CParentWnd::OnCreate(...)

  {

   m_tab.Create(...);

   m_tab.InsertItem(0,"Option 1");

   m_tab.InsertItem(1,"Option 2");

   Create a edit box as the m_tab's Child

   Create a static box as the m_tab's 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)

   {//根據(jù)當(dāng)前頁顯示/隱藏不同的子窗口

   edit_box.ShowWindow(SW_SHOW);

   static_box.ShowWindow(SW_HIDE);

   }

   else

   {//

   edit_box.ShowWindow(SW_HIDE);

   static_box.ShowWindow(SW_SHOW);

   }

  }

  

相關(guān)頻道: eNews

您對本文或本站有任何意見,請?jiān)谙路教峤唬x謝!

投稿信箱:tougao@enet16.com