属性页对话框包括向导对话框和一般属性页对话框两类,上一节演示了如何创建并显示向导对话框,本节将继续介绍一般属性页对话框的创建和显示。

实际上,一般属性页对话框的创建和显示过程和向导对话框是很类似的。本节将上一节中的向导对话框进行少量修改,使其成为一般属性页对话框。

一般属性页对话框的创建步骤:

       1.创建属性页对话框资源

       属性页对话框资源的创建方法同向导对话框是一样的,上一讲中的对话框资源不需进行任何修改。

       2.创建属性页类

       属性页类的创建和向导对话框的属性页类也基本一样,只是一般属性页对话框中不需要“下一步”和“完成”等按钮,所以上一讲中属性页类的OnSetActive和OnWizardFinish等重载函数可以去掉。即CSummandPage类中的OnSetActive函数、CAddPage类中的OnSetActive函数和OnWizardFinish函数可以删除或注释掉。其他部分不需作任何修改。【PS;记得将CSummandPage类和CAddPage类头文件(.h)中的相应函数声明也注释或删掉,否则编译错误】

       3.创建属性表类

       创建属性表类的过程同向导对话框属性表类也是一样的,所以上一讲中的CAddSheet类不需修改。

       4.显示一般属性页对话框

       上一讲向导对话框的显示是在OnBnClickedInstructButton函数中实现的,其中语句sheet.SetWizardMode();旨在设置属性表为向导对话框模式,所以显示一般属性页对话框时不需调用SetWizardMode成员函数。另外,我们可以将属性页对话框的标题设为“使用说明”,在构造属性表对象时将此字符串作为构造函数的参数传入。

OnBnClickedInstructButton函数修改如下:

void CAdditionDlg::OnBnClickedInstructButton()   
{   
    // TODO: Add your control notification handler code here   
  
    // 创建属性表对象   
    CAddSheet sheet(_T("使用说明"));   
       
    // 打开模态一般属性页对话框   
    sheet.DoModal();   
}  

       这样一般属性页对话框的创建和显示就讲完了,我们运行下程序,在结果对话框上点“使用说明”按钮看看效果吧:

 

再总结下,一般属性页对话框和向导对话框的创建和显示的不同包括,是否需要OnSetActive和OnWizardFinish等重载函数,是否需要调用属性表类的SetWizardMode函数设置为向导对话框模式。