首页 > 代码库 > MFC属性表单的创建

MFC属性表单的创建

一个属性表单由一个或多个属性页组成。它有效地解决了大量信息无法在一个对话框上显示这一问题。

1、创建属性页

为了创建属性表单,首先需要创建属性页,后者对应的MFC类是CPropertyPage,该类生成的对象代表了属性表单中一个单独的属性页。

 

在资源编译器下添加3个属性页资源,并修改这三个属性页资源的ID及标题(Caption属性),属性页的标题就是最终在属性页上显示的选项卡的名称。有三种类型的属性页,如图:

说明:如果知道了属性页资源与对话框资源之间的属性区别,也可以在程序中先增加一个普通对话框资源,然后修改其属性,使其符合属性页资源的要求,然后把它当作属性页资源来使用。

 

为每一个属性页生成相应的属性页类,基类是CPropertyPage。

 

2、创建属性表单

为了创建一个属性表单,首先需要创建一个对象,接下来在此对象中为每一个属性页创建一个对象(CPropertyPage类型),并调用AddPage函数添加每一个属性页,然后调用DoModal函数显示一个模态属性表单,或调用Create函数创建一个非模态属性表单。

(1)创建一个基类为CPropertySheet的类CPropSheet。

 

(2)CPropSheet类头文件中为先前创建的三个属性页分别定义一个成员变量。注意包含相应头文件。

CProPage1 m_page1;CProPage2 m_page2;CProPage3 m_page3;

 

(3)添加属性页对象。

通常都是在属性表单的构造函数中添加属性页对象。属性表单有两个构造函数:

CPropSheet::CPropSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)    :CPropertySheet(nIDCaption, pParentWnd, iSelectPage){}CPropSheet::CPropSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)    :CPropertySheet(pszCaption, pParentWnd, iSelectPage){}

iSelectPage指定的是属性表单初始选择的属性页,默认值是第一个页面。因为属性表单有两个构造函数,在构造属性表单对象时,可任选其中一个构造函数。

CPropSheet::CPropSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)    :CPropertySheet(pszCaption, pParentWnd, iSelectPage){    AddPage(&m_page1);    AddPage(&m_page2);    AddPage(&m_page3);}

 

(4)显示属性表单。

CPropertySheet类是从CWnd类派生来的,而不是派生于CDialog类。但CPropertySheet对象与CDialog对象的操作方式是类似的。调用DoModal函数显示一个模态属性表单,或调用Create函数创建一个非模态属性表单。

 

如果要在初始化时就显示属性表单,需要在OnInitDialog函数中操作:

MFC属性表单的创建