久久―日本道色综合久久,亚洲欧美精品在线,狼狼色丁香久久婷婷综合五月,香蕉人人超,日本网站黄,国产在线观看不卡免费高清,无遮挡的毛片免费

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

VC++之Tab Ctrl控件

2004-02-10 eNet&Ciweek

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

  TCS_BUTTONS 使用按鈕來表示頁(yè)選擇位置

  TCS_MULTILINE 分行顯示頁(yè)選擇位置

  TCS_SINGLELINE 只使用一行顯示頁(yè)選擇位置

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

  BOOL InsertItem( int nItem, LPCTSTR lpszItem );nItem為位置,從零開始,lpszItem為頁(yè)選擇位置上顯示的文字。如果你希望在頁(yè)選擇位置處顯示一個(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)前被選中的頁(yè)位置。

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

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

  

  屬性頁(yè)控件的消息映射同樣使用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)。對(duì)于列表控件可能取值和對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)為:

  

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

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

  

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

  

  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在屬性頁(yè)的第一頁(yè)

   static_box.ShowWindow(SW_HIDE); // static box在屬性頁(yè)的第二頁(yè)

  }

  void CParentWnd::OnSelectChangeTab(NMHDR* pNMHDR, LRESULT* pResult)

  {//處理頁(yè)選擇改變后的消息

   if(m_tab.GetCurSel()==0)

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

   edit_box.ShowWindow(SW_SHOW);

   static_box.ShowWindow(SW_HIDE);

   }

   else

   {//

   edit_box.ShowWindow(SW_HIDE);

   static_box.ShowWindow(SW_SHOW);

   }

  }

  

相關(guān)頻道: eNews

您對(duì)本文或本站有任何意見,請(qǐng)?jiān)谙路教峤?,謝謝!

投稿信箱:tougao@enet16.com