WTL:MFC程序员指南 - 属性表与向导

需积分: 9 3 下载量 120 浏览量 更新于2024-07-21 收藏 393KB PDF 举报
"WTL for MFC程序员,第八部分 - 属性表和向导" WTL(Windows Template Library)是为MFC(Microsoft Foundation Classes)开发者设计的一个轻量级UI库,它基于ATL(Active Template Library)构建。WTL提供了一个类似MFC的框架来开发具有用户界面的Windows应用程序,但其不采用MFC的庞大虚函数表机制,因此生成的程序体积更小,且不依赖MFC运行库。 在WTL中,创建属性表和向导涉及两个关键类:CPropertySheetImpl和CPropertySheetWindow。CPropertySheetWindow是CWindow的派生类,作为窗口接口,处理与属性表相关的特定消息,如PSM_*系列消息。而CPropertySheetImpl包含了消息映射和窗口的实现,类似于ATL中的基础窗口类,它维护了一个PROPSHEETHEADER结构和一个HPROPSHEETPAGE类型的数组,用于管理属性表的页面。 创建属性表时,首先需要理解CPropertySheetImpl的方法。这些方法包括但不限于初始化属性表、设置活动页面、添加和删除属性页等。例如,`SetActivePageByID`方法允许通过ID来设定当前活动的属性页,对应的底层消息是PSM_SETCURSELID。 WTL还支持创建属性页,这通常涉及到CPropertyPageWindow和CPropertyPageImpl。CPropertyPageWindow是属性页窗口的接口,而CPropertyPageImpl处理属性页的实现,包括消息映射和事件处理。处理通知消息是属性页交互的关键,例如,当用户在页面上进行操作时,属性页会发送WM_COMMAND或其它自定义消息,开发者需要在CPropertyPageImpl的消息映射中处理这些消息。 创建一个属性表的过程通常包括以下步骤: 1. 实例化CPropertySheetImpl对象,指定属性表的标题和样式。 2. 创建一个或多个CPropertyPageImpl对象,代表属性表的各个页面。 3. 将属性页添加到属性表中,使用CPropertySheetImpl的AddPage方法。 4. 可选地,创建一个向导样式属性表,需要设置适当的样式标志。 5. 调用CPropertySheetImpl的DoModal方法启动属性表。 对于更复杂的属性表,可以使用DDX(Dialog Data Exchange)和DDV(Dialog Data Validation)机制,这两个机制帮助在控件和数据成员之间自动交换和验证数据。此外,还可以自定义属性页的外观,如在属性页中添加图标,或者调整属性表的位置使其居中显示。 WTL为MFC程序员提供了一种轻量级且灵活的方式来实现属性表和向导功能,它的设计使开发者能够更高效地构建用户界面,同时避免了MFC的复杂性和额外的内存开销。通过深入理解和应用WTL中的CPropertySheetImpl和CPropertyPageImpl类,开发者可以创建出功能丰富且高效的Windows应用程序。