CTabCtrl控件

VC中的CTabCtrl用法与VB、Delphi的选项卡控件有很大的不同,每个属性页是用一个“窗体”(对话框)来实现,于是要为每个属性页对话框建类,还要关联、初始化……实在麻烦得多。但是CTabCtrl可重用性比ActiveX的选项卡控件好,因为一个属性页可以被多个不同的选项卡对话框调用,就像MFC中很多属性选项卡有“General”这一选项页,可以被多个控件的属性页调用,作为“通用”的,有符合现代软件工程可重用性要求。
下面发一个最简单的代码,使用CTabCtrl控件实现属性页功能,要源码的请登陆www.maoyeah.com,技术文章专栏找。
1、建立一个基于对话框的应用程序;
2、画CTabCtrl控件,类向导中关联变量名为m_tab,新建三个对话框属性设为Child,None,用ClassWizard生成新的类,基类为Cdialog,分别为Cpage0,Cpage1,Cpage2,ID号分别为 IDD_DIALOG0,IDD_DIALOG1,IDD_DIALOG2。在主对话框中加入三个变量,Cpage0 page0; Cpage1 page1;Cpage2 page2。别忘了在主对话框的头文件中要加入#include "Page0.h", #include "Page1.h",#include "Page2.h"
3、在主对话框的OnInitDialog()内初始化 :
// TODO: Add extra initialization here

//初始化m_tab控件
m_tab.InsertItem(0," 呵呵,茂叶工作室 ");
m_tab.InsertItem(1," 嘻嘻 ");
m_tab.InsertItem(2," 哈哈,www.maoyeah.com ");

//建立属性页各页
page0.Create(IDD_DIALOG0,GetDlgItem(IDC_TAB1));
page1.Create(IDD_DIALOG1,GetDlgItem(IDC_TAB1));
page2.Create(IDD_DIALOG2,GetDlgItem(IDC_TAB1));
//设置页面的位置在m_tab控件范围内
CRect rect;
m_tab.GetClientRect(&rect);
rect.top+=20;
rect.bottom-=4;
rect.left+=4;
rect.right-=4;
page0.MoveWindow(&rect);
page1.MoveWindow(&rect);
page2.MoveWindow(&rect);
page1.ShowWindow(TRUE);
m_tab.SetCurSel(1);

4、m_tab控件属性页选择时显示各页:
void CMy3Dlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
int CurSel;
CurSel=m_tab.GetCurSel();
switch(CurSel)
{
case 0:
page0.ShowWindow(TRUE);
page1.ShowWindow(FALSE);
page2.ShowWindow(FALSE);

break;
case 1:
page0.ShowWindow(FALSE);
page1.ShowWindow(TRUE);
page2.ShowWindow(FALSE);

break;
case 2:
page0.ShowWindow(FALSE);
page1.ShowWindow(FALSE);
page2.ShowWindow(TRUE);

break;
default: ;

}

*pResult = 0;

}


错误:Dialog 必须选IDD_OLE_PROPAGE_xxx, 否则插入的控件不响应鼠标事件.
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、付费专栏及课程。

余额充值