MFC程序员的WTL指南(9)属性页与向导
2006-07-22 22:03:05 来源:WEB开发网INT_PTR DoModal(HWND hWndParent = ::GetActiveWindow())
创建并显示一个模式的属性表,返回正值表示操作成功,有关PropertySheet() API的帮助文档有有关返回值的详细解释,如果发生错误,属性表无法创建,DoModal()返回-1。
HWND Create(HWND hWndParent = NULL)
创建并显示一个无模式的属性表,返回值是窗口的句柄,如果发生错误,属性表无法创建,Create()返回NULL。
WTL 的属性页类WTL对属性页的封装类与属性表的封装类相似,有一个窗口接口类 CPropertyPageWindow 和一个实现类 CPropertyPageImpl 。CPropertyPageWindow 很小,包含最常用的需要在作为父窗口的属性表中调用的方法。
CPropertyPageImpl 是从 CDialogImplBaseT派生,由于属性页是从对话框资源中创建的,这就意味着所有可以在对话框中使用的WTL的特性都可以在属性页中使用,如DDX和DDV。CPropertyPageImpl 有两个主要作用:管理一个PROPSHEETPAGE数据结构(保存在成员变量m_psp中),处理所有PSN_开头的通知消息。对于很简单的属性页可以直接使用CPropertyPage类,这个类只适合与用户没有任何交互的属性页,例如“关于”页面或者向导中的介绍页面
也可以创建含有ActiveX控件的属性页。首先,这需要在stdafx.h文件中添加对atlhost.h的包含,还要使用CAxPropertyPageImpl代替CPropertyPageImpl。对于简单的页面可以使用CAxPropertyPage代替CPropertyPage。
CPropertyPageImpl 的方法CPropertyPageImpl 管理着一个 PROPSHEETPAGE 结构,也就是公有成员 m_psp。CPropertyPageImpl还重载了PROPSHEETPAGE*操作符,所以你可以将CPropertyPageImpl传递给需要LPPROPSHEETPAGE 或 LPCPROPSHEETPAGE 类型的参数的方法,例如CPropertySheetImpl::AddPage()。
更多精彩
赞助商链接