通常,创建的属性表将有模式的。 当使用一模式属性表时,用户必须在使用应用程序的其他部分之前关闭属性表。 本文描述可使用创建无模式属性表允许用户保存打开,如果使用属性表应用程序的其他部分的方法。
显示属性表用作无模式对话框而不是作为模式对话框,而不是调用 CPropertySheet::CreateDoModal。 必须还实现一些额外的任务支持无模式属性表。
其中一个是任务。它修改的属性表和外部对象之间交换数据属性表时打开。 这通常是与标准任务无模式对话框中。 此任务的一部分实现通信通道属性设置适用于的无模式属性表和外部对象的。 如果从无模式属性表,CPropertySheet 派生类此实现更加容易。 本文假定您这样做。
通信的方法的无模式属性表和外部对象 (视图中当前选定之间例如,) 将定义从属性表的指针到外部对象。 定义一个函数调用 (类似于 SetMyExternalObject)。CPropertySheet- 更改指针的派生类,每当从外部对象的焦点更改为另一个架构。 SetMyExternalObject 函数需要重置属性设置每个页的以反映最近选择的外部对象。 为此,SetMyExternalObject 函数绑定可以访问 CPropertyPage 属于 CPropertySheet 类的对象。
最方便的方式提供对在属性表中属性页将嵌入 CPropertySheet的 CPropertyPage 对象派生的对象。 嵌入 CPropertyPage 中 CPropertySheet对象派生的对象与模式对话框的典型方式不同,属性表的所有者创建 CPropertyPage 对象并将其传递给属性表通过 CPropertySheet::AddPage。
具有确定的许多用户界面选择何时在应用非模式属性表设置的外部对象。 重写是应用当前属性页上的设置,只要用户更改任何值。 另一种方法是提供应用按钮,允许用户在提交之前累计在属性页上更改到外部对象。 有关方法处理应用按钮的信息,请参见 处理应用按钮文章。