CTabCtrl的使用

CTabCtrl的使用   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_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)  // 用switch(m_tab.GetCurSel())更好 {//根据当前页显示/隐藏不同的子窗口 edit_box.ShowWindow(SW_SHOW); static_box.ShowWindow(SW_HIDE); } else {// edit_box.ShowWindow(SW_HIDE); static_box.ShowWindow(SW_SHOW); } }  

CTabCtrl类是MFC中的一个控件类,它用于创建多个选项卡,并在其中显示不同的内容。以下是CTabCtrl的基本使用步骤: 1. 在对话框资源中添加一个Tab Control控件。 2. 在代码中定义一个CTabCtrl对象,并调用其Create()函数进行初始化。如下所示: ```c++ CTabCtrl tabCtrl; tabCtrl.Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP, CRect(10, 10, 300, 200), this, 1); ``` 3. 调用CTabCtrl的InsertItem()函数添加选项卡。如下所示: ```c++ TCITEM tcItem; tcItem.mask = TCIF_TEXT; tcItem.pszText = _T("Tab 1"); tabCtrl.InsertItem(0, &tcItem); ``` 这样就添加了一个名为“Tab 1”的选项卡。 4. 在选项卡上添加控件。可以在选项卡上添加任何控件,例如按钮、列表框等。需要注意的是,这些控件需要设置为子窗口,否则在选项卡上无法显示。如下所示: ```c++ CButton btn; btn.Create(_T("Button 1"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(10, 40, 100, 60), &tabCtrl, 2); ``` 5. 在选项卡切换时显示不同的内容。可以通过CTabCtrl的SetCurSel()函数设置当前选中的选项卡,并在该选项卡上显示相应的内容。如下所示: ```c++ int nSel = tabCtrl.GetCurSel(); switch (nSel) { case 0: // 显示选项卡1的内容 break; case 1: // 显示选项卡2的内容 break; case 2: // 显示选项卡3的内容 break; } ``` 以上就是使用CTabCtrl控件创建选项卡的基本步骤。需要注意的是,CTabCtrl控件的使用还有很多细节需要注意,例如添加选项卡时需要设置选项卡的样式、选项卡的图标等。建议参考MFC的官方文档进行详细学习。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值