本文共 2042 字,大约阅读时间需要 6 分钟。
包含控件页的标签式对话框,用户可通过单击鼠标在其间切换.
属性表
属性表的功能都合理地封装在一对MFC类,CPropertySheet和CPropertyPage中.CPropertySheet代表属性表自身,是从CWnd派生出来的.CPropertyPage代表属性表的页,是从CDialog派生出来的.
和对话框一样,属性表可以是模式和无模式的.CPropertySheet::DoModal创建模式属性表,而CPropertySheet::Create创建无模式属性表.
创建模式属性表的步骤如下:
简单示例代码
#pragma once
#include"resource.h"
// CFirstPage 对话框
class CFirstPage :public CPropertyPage
{
DECLARE_DYNAMIC(CFirstPage)
public:
CFirstPage();
virtual~CFirstPage();
// 对话框数据
enum{ IDD = IDD_PROPPAGE_FIRST };
protected:
virtualvoid DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
};
// FirstPage.cpp :实现文件
//
#include"stdafx.h"
#include"MFCExplore.h"
#include"FirstPage.h"
#include"afxdialogex.h"
// CFirstPage 对话框
IMPLEMENT_DYNAMIC(CFirstPage,CPropertyPage)
CFirstPage::CFirstPage()
:CPropertyPage(CFirstPage::IDD)
{
}
CFirstPage::~CFirstPage()
{
}
voidCFirstPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CFirstPage,CPropertyPage)
END_MESSAGE_MAP()
// CFirstPage 消息处理程序
CSecondPage类似于CFirstPage,略.
#pragma once
#include"afxdlgs.h"
#include"FirstPage.h"
#include"SecondPage.h"
classCMyPropertySheet :
publicCPropertySheet
{
public:
CMyPropertySheet(LPCTSTRpszCaption, CWnd* pParentWnd = NULL);
~CMyPropertySheet();
//第一页属性页
CFirstPagem_firstPage;
//第二页属性页
CSecondPagem_secondPage;
};
#include"stdafx.h"
#include"MyPropertySheet.h"
CMyPropertySheet::CMyPropertySheet(LPCTSTRpszCaption, CWnd* pParentWnd)
:CPropertySheet(pszCaption,pParentWnd, 0)
{
AddPage(&m_firstPage);
AddPage(&m_secondPage);
}
CMyPropertySheet::~CMyPropertySheet()
{
}
在CxxxApp::InitInstance()中创建模态属性表.
CMyPropertySheetps(_T("Properties"));
m_pMainWnd =&ps;
INT_PTR nResponse =ps.DoModal();
参考自MFC Windows程序设计 8.4属性表.