在您的应用程序中使用属性表

若要在应用程序中使用属性表,请完成下列步骤:

  1. 为每个属性页创建对话框模板资源。 记住,用户可能从一页切换到另一页,因此,尽量让每页的布局一致。

    所有页的对话框模板的大小不必相同。 框架将使用最大页的大小确定要在属性页的属性表中分配的空间。

    当您为属性页创建对话框模板资源时,您必须在“对话框属性”属性表中指定下列样式:

    • 将“常规”页上的“标题”编辑框设置为你希望在此页的选项卡中显示的文本

    • 将“样式”页上的“样式”列表框设置为“子级”

    • 将“样式”页上的“边框”列表框设置为“细”

    • 确保选中了“样式”页上的“标题栏”复选框

    • 确保选中了“更多样式”页上的“禁用”复选框

  2. 创建一个对应于每个属性页对话框模板的 CPropertyPage 派生类。 请参阅添加类。 请选择 CPropertyPage 作为基类。

  3. 创建成员变量以保存此属性页的值。 将成员变量添加到属性页的过程与将成员变量添加到对话框的过程完全一致,因为属性页是一个特殊化对话框。 有关详细信息,请参阅为对话框控件定义成员变量

  4. 在源代码中构造一个 CPropertySheet 对象。 通常,您将在显示属性表的命令的处理程序中构造 CPropertySheet 对象。 此对象表示整个属性表。 如果使用 DoModal 函数创建模式属性表,则框架默认提供三个命令按钮:“确定”、“取消”和“应用”。 框架不会为使用 Create 函数创建的无模式属性表创建命令按钮。 您无需从 CPropertySheet 派生类,除非希望添加其他控件(如预览窗口)或显示无模式属性表。 此步骤对于无模式属性表是必需的,因为它们可能不包含可能用于关闭属性表的任何默认控件。

  5. 对于将添加到属性表的每个页,请执行下列操作:

    • 为在此过程前面创建的每个 CPropertyPage 派生类构造一个对象。

    • 为每页调用 CPropertySheet::AddPage

    通常,创建 CPropertySheet 的对象在该步骤中还将创建 CPropertyPage 对象。 但是,如果实现 CPropertySheet 派生类,则可将 CPropertyPage 对象嵌入 CPropertySheet 对象并从 AddPage 派生类构造函数为每页调用 CPropertySheetAddPage 会将 CPropertyPage 对象添加到属性表的页列表,但不会实际为该页创建窗口。 因此,无需等到创建属性表窗口后再调用 AddPage;您可通过属性表的构造函数调用 AddPage

    默认情况下,如果属性表具有的选项卡在属性表的单个行中放不下,这些选项卡则会堆叠在多个行中。 若要禁用堆叠,请调用 CPropertySheet::EnableStackedTabs 并将参数设置为 FALSE。 您必须在创建属性表时调用 EnableStackedTabs

  6. 调用 CPropertySheet::DoModalCreate 以显示属性表。 调用 DoModal 以将属性表作为模式对话框创建。 调用 Create 以将属性表作为无模式对话框创建

  7. 在属性页和属性表的所有者之间交换数据。 这在交换数据一文中进行了介绍。

有关如何使用属性表的示例,请参阅 MFC 常规示例 PROPDLG

另请参阅

属性表