MFC程序员的WTL指南(9)属性页与向导
2006-07-22 22:03:05 来源:WEB开发网本文示例源代码或素材下载
介绍
甚至在成为Windows 95的通用控件之前,使用属性表来表示一些选项就已经成为一种很流行的方式。向导模式的属性表通常用来引导用户安装软件或完成其他复杂的工作。WTL对这两种方式的属性表都提供了很好的支持,可以使用前面介绍的与对话框相关的特性,如DDX和DDV。在本章我将演示如何创建一个基本的属性表和向导,如何处理属性页发送的通知消息和事件。
WTL 的属性表类实现一个属性表需要CPropertySheetWindow和CPropertySheetImpl两个类联合使用,它们都定义在atldlgs.h头文件中。CPropertySheetWindow类是一个窗口接口类(也就是说是一个CWindow派生类),CPropertySheetImpl有消息映射链和窗口的完整实现,这和ATL的基本窗口类相似,它需要CWindow和CWindowImpl两个类联合使用。
CPropertySheetWindow类封装了对各种PSM_* 消息的处理,例如,SetActivePageByID()封装了PSM_SETCURSELID消息。CPropertySheetImpl类管理一个PROPSHEETHEADER结构和一个HPROPSHEETPAGE类型的数组,CPropertySheetImpl类还提供了
一些方法用来填充PROPSHEETHEADER结构,添加或删除属性页,你也可以使用m_psh成员变量直接操作PROPSHEETHEADER结构。
最后,CPropertySheet类是CPropertySheetImpl类的一个特例,你可以直接使用它而不需要定制整个属性表。
CPropertySheetImpl 的方法下面是CPropertySheetImpl类的一些重要方法。由于许多方法仅仅是对窗口消息的封装,所以就不在这里列出,你可以查看atldlgs.h中完整的函数清单。
CPropertySheetImpl(_U_STRINGorID title = (LPCTSTR) NULL,
UINT uStartPage = 0, HWND hWndParent = NULL)
CPropertySheetImpl类的构造函数允许你使用一些常用的属性(默认值),所以就不需要在调用其他的方法设置它们。title指定显示在属性表的标题栏的文字,_U_STRINGorID是一个WTL的工具类,它可以自动转换LPCTSTR和资源ID,例如,下面的两行代码都是正确的:
更多精彩
赞助商链接