MFC程序员的WTL指南(9)属性页与向导
2006-07-22 22:03:05 来源:WEB开发网CPropertyPageImpl的构造函数允许你设置页面的标题,标题通常显示在页面的Tab标签上:
CPropertyPageImpl(_U_STRINGorID title = (LPCTSTR) NULL)
如果你不想让属性表创建属性页面而是想手工创建页面,你可以调用Create():
HPROPSHEETPAGE Create()
Create() 只是调用用m_psp做参数调用了 CreatePropertySheetPage() 。如果你向一个已经创建的属性表添加属性页或者向另一个不在控制的属性表添加属性页(例如,处理系统Shell扩展的属性表),那就只需要调用Create()函数。
下面的三个方法用于设置属性页的各种标题文本:
void SetTitle(_U_STRINGorID title)
void SetHeaderTitle(LPCTSTR lpstrHeaderTitle)
void SetHeaderSubTitle(LPCTSTR lpstrHeaderSubTitle)
第一个方法改变页面标签的文字,另外几个用来设置Wizard97样式的向导中属性页顶部的文字。
void EnableHelp()
设置m_psp中的PSP_HASHELP标志,当本页面激活时使属性表的帮助按钮可用。
处理通知消息CPropertyPageImpl有一个消息映射处理WM_NOTIFY。如果通知代码是PSN_*的值,OnNotify()就会调用相应的通知处理函数。这使用了编译阶段虚函数机制,从而使得派生类可以很容易的重载这些处理函数。
由于WTL 3和WTL 7设计的改变,从而存在两套不同的通知处理机制。在WTL 3中通知处理函数返回的值与PSN_*消息的返回值不同,例如,WTL 3是这样处理PSN_WIZFINISH的:
case PSN_WIZFINISH:
lResult = !pT->OnWizardFinish();
break;
OnWizardFinish()期望返回TRUE结束向导,FALSE阻止关闭向导。这个方法很简陋,但是IE5的通用控件对PSN_WIZFINISH处理的返回值添加了新解释,他返回需要获得焦点的窗口的句柄。WTL 3的程序将不能使用这个特性,因为它对所有非0的返回值都做相同的处理。
更多精彩
赞助商链接