标签:
建立一个基于对话框的MFC应用程序TabCtrlTest
Step 1:在资源视图中,新建对话框资源,资源ID:IDD_TabCtrlExample_DLG,添加类:CTabCtrlExamlpeDlg。
Step 2:在对话框视图中加入CTabCtrl控件,资源ID:IDD_TAB1,添加控件变量:m_ctlTabInfo。
Step 3:新建两个对话框:
|
对话框ID |
添加类 |
设置对话框属性 |
补充 |
对话框1 |
IDD_Test1_DlG |
CTest1 |
Border:None Styles:Child |
界面可自行设计 |
对话框2 |
IDD_Test2_DlG |
CTest2 |
在CTabCtrlExamlpeDlg定义两个成员变量:
public: CTabCtrl m_ctlTabInfo; CTest1 m_test1Page;//界面1 CTest2 m_test2Page;//界面2
Step 4:重写CTabCtrlExamlpeDlg::OnInitDialog()函数
(类视图下,选中CCTabCtrlExamlpeDlg类,右键属性,单击属性界面右边第一个正方体图标,双击OnInitDialog即可)
BOOL CTabCtrlExamlpeDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: 在此添加额外的初始 #pragma region 初始化TabCtrl控件 //首先,为各Tab页添加标题 m_ctlTabInfo.InsertItem(0,_T("界面一")); m_ctlTabInfo.InsertItem(2,_T("界面二")); //第二,建立各Tab页 m_test1Page.Create(IDD_Test1_Dlg, GetDlgItem(IDC_TAB1)); m_test2Page.Create(IDD_Test2_Dlg, GetDlgItem(IDC_TAB1)); //第三,设置页面的位置在m_ctlTabInfo控件范围内 CRect rc; m_ctlTabInfo.GetClientRect(rc); rc.top += 21; rc.bottom -= 1; rc.left += 1; rc.right -= 1; m_test1Page.MoveWindow(rc); m_test1Page.ShowWindow(SW_SHOW); m_test2Page.MoveWindow(rc); m_test2Page.ShowWindow(SW_HIDE); #pragma endregion return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE }
Step 5:响应TabCtrl控件的TCN_SELCHANGE消息,实现切换页面功能。
(右键TabCtrl控件à添加事件处理程序à选中TCN_SELCHANGE消息à添加编辑)
void CTabCtrlExamlpeDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult) { // TODO: 在此添加控件通知处理程序代码 *pResult = 0; switch (m_ctlTabInfo.GetCurSel()) { case 0: m_test1Page.ShowWindow(SW_SHOW); m_test2Page.ShowWindow(SW_HIDE); break; case 1: m_test1Page.ShowWindow(SW_HIDE); m_test2Page.ShowWindow(SW_SHOW); break; default: break; } }
标签:
原文地址:http://www.cnblogs.com/whl2012/p/4790194.html