MFC 多个对话框标签页选择效果
1.新建一个MFC工程
取名PageSheet,选择Dialog based,然后Finish。
2.在对话框资源中插入两个对话框IDD_DIALOG1、IDD_DIALOG2,作为两个子页。
3.为这两个对话框增加两个类,分别为CPage1和CPage2,其基类选择CPropertyPage。
4.增加一个属性页类CMySheet, 其基类选择CPropertySheet。
5.在类CMySheet中增加两个成员变量m_page1,类型为CPage1,m_page2,类型为CPage2。
如:
public:
CPage1 m_page1;
CPage2 m_page2;
6.在类CMySheet的构造函数中添加如下两句,增加两个页。
如:
CMySheet::CMySheet()
{
AddPage(&m_liveRecord);
AddPage(&m_livePlay);
}
ps:CMySheet类原先的两个带参构造函数,可以删除,改成以上所示无参构造函数。
7.在类CPageSheetApp的初始化函数InitInstance()中,将原来声明的对象去掉。改为属性页类对象声明。
如:
//CPageSheetDlg dlg;
CMySheet dlg;
8.添加头文件。
①“PageSheet.cpp”文件中添加头文件“MySheet.h”
②“MySheet.h”中添加头文件“CPage1.h”和“CPage2.h”
9.为属性页类添加初始化函数。
如:
BOOL CMySheet::OnInitDialog()
{
//属性页对话框初始化
BOOL bResult = CPropertySheet::OnInitDialog();
//设置窗口标题
SetWindowText("Page Sheet");
//去除多余的控件(确定、取消、应用、帮助)
CWnd *pWnd = GetDlgItem(IDOK);
pWnd->ShowWindow(SW_HIDE);
pWnd = GetDlgItem(ID_APPLY_NOW);
pWnd->ShowWindow(SW_HIDE);
pWnd = GetDlgItem(IDHELP);
pWnd->ShowWindow(SW_HIDE);
pWnd = GetDlgItem(IDCANCEL);
pWnd->ShowWindow(SW_HIDE);
RECT rc;
//调整属性页对话框的大小
GetWindowRect (&rc);
MoveWindow(rc.left,rc.top,rc.right-rc.left,rc.bottom-rc.top-30); //调整窗口
return bResult;
}
10.可以将多余的对话框、文件删除。
对话框:程序初始对话框IDD_PAGESHEET_DIALOG
文件:CPageSheetDlg.h ,CPageSheetDlg.cpp
转载于:https://blog.51cto.com/jwj123/1584945