刚刚了解到一点分页对话框,只形成了一个分页模型,记录下来。
1、首先在资源视图中插入两个对话框,作为两个分页Page1,Page2,如下图所示。
为两个对话框建立两个类,分别为CPage1,CPage2,但两个类的基类需要选择CPropertyPage
2、建立一个基于CPropertySheet的类CPages。
在Pages.h中添加两个分页对话框的头文件,并添加两个分页类的成员变量,如下所示:
#pragma once
#include "Page1.h"//加头文件
#include "Page2.h"
// CPages
class CPages : public CPropertySheet
{
DECLARE_DYNAMIC(CPages)
public:
CPages(UINT nIDCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);
CPages(LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);
virtual ~CPages();
CPage1 m_page1;//添加变量
CPage2 m_page2;
protected:
DECLARE_MESSAGE_MAP()
};
在CPages.cpp文件里添加增加分页的AddPage。
// Pages.cpp : 实现文件
//
#include "stdafx.h"
#include "TestGUI.h"
#include "Pages.h"
// CPages
IMPLEMENT_DYNAMIC(CPages, CPropertySheet)
CPages::CPages(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
:CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
{
AddPage(&m_page1);//添加分页
AddPage(&m_page2);
}
CPages::CPages(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
:CPropertySheet(pszCaption, pParentWnd, iSelectPage)
{
AddPage(&m_page1);//添加分页
AddPage(&m_page2);
}
CPages::~CPages()
{
}
BEGIN_MESSAGE_MAP(CPages, CPropertySheet)
END_MESSAGE_MAP()
// CPages 消息处理程序
3、在资源视图的菜单中添加一个“分页对话框”子菜单,我的菜单ID为ID_Pages_Menu。
在该菜单添加事件处理程序,在view类列表添加。
在视图类.cpp添加以下代码:
//分页对话框
void CTestGUIView::OnPagesMenu()
{
// TODO: 在此添加命令处理程序代码
CPages pages(_T("1"));//里面的文本内容随自己喜欢添加
pages.DoModal();
}
4、我在类向导中增加了两个对话框的OnApply()虚函数,就可以点击应用按钮实现事件,但我还没有开始完成应用的事件,只是粗略的写了对话框的分页。
最后的效果图如下: