1. 添加TAB控件并为其关联一个CTabCtrl类型的控件变量m_tab
在对话框点击右键,选择class wizard...
2. 创建新的对话框,新对话框个数及ID根据设计需要进行修改
资源视图栏中,在Dialog文件夹右键
对新添的对话框属性进行设置:Border设为None,Style属性设为Child
在各对话框中添加所需控件后,为各对话框生成各自的对话框类:
右键点击需生成类的对话框
在弹出的对话框中: class name为自己取得类名如 CRegDlg; Base class选择CDialog;
点击finish
3. 在主对话框的头文件(PCRDlg.h)中包含新添加对话框的头文件(RegDlg.h)
继续在该主对话款类头文件中,为新添的对话框类创建两个成员变量
4. 在主对话框的初始化程序中添加如下代码:
- CRect tabRect; // 标签控件客户区的位置和大小
- m_tab.InsertItem(0, _T("Register")); // 插入第一个标签“Register”
- m_tab.InsertItem(1, _T("Graphic")); // 插入第二个标签“Graphic”
- m_RegDlg.Create(IDD_REGISTER_DLALOG, &m_tab); // 创建第一个标签页
- m_GraDlg.Create(IDD_GRAPHIC_DIALOG, &m_tab); // 创建第二个标签页
- m_tab.GetClientRect(&tabRect); // 获取标签控件客户区Rect
- // 调整tabRect,使其覆盖范围适合放置标签页
- tabRect.left += 1;
- tabRect.right -= 1;
- tabRect.top += 25;
- tabRect.bottom -= 1;
- // 根据调整好的tabRect放置m_jzmDlg子对话框,并设置为显示
- m_RegDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
- // 根据调整好的tabRect放置m_androidDlg子对话框,并设置为隐藏
- m_GraDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
5. 为TAB控件的通知消息TCN_SELCHANGE添加处理函数:
在tab控件上点击右键
- void CPCRDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
- {
- // TODO: Add your control notification handler code here
- *pResult = 0;
- CRect tabRect; // 标签控件客户区的Rect
- // 获取标签控件客户区Rect,并对其调整,以适合放置标签页
- m_tab.GetClientRect(&tabRect);
- tabRect.left += 1;
- tabRect.right -= 1;
- tabRect.top += 25;
- tabRect.bottom -= 1;
- switch (m_tab.GetCurSel())
- {
- // 如果标签控件当前选择标签为“register”,则显示m_regdlg对话框,隐藏m_gradlg对话框
- case 0:
- m_RegDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
- m_GraDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
- break;
- // 如果标签控件当前选择标签为“graphic”,则隐藏m_regdlg对话框,显示m_gradlg对话框
- case 1:
- m_RegDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
- m_GraDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
- break;
- default:
- break;
- }
- }