MFC程序员WTL指南(9)属性页与向导
2008-01-19 20:26:45 来源:WEB开发网核心提示:需要注意的是OnKillActive()中做的事情也可以在OnWizardNext()中完成,因为这两个处理函数都可以使向导维持在当前页面,MFC程序员WTL指南(9)属性页与向导(7),它们的不同之处在于OnKillActive()在用户单击“上一步”和“下一步”按钮时
需要注意的是OnKillActive()中做的事情也可以在OnWizardNext()中完成,因为这两个处理函数都可以使向导维持在当前页面。它们的不同之处在于OnKillActive()在用户单击“上一步”和“下一步”按钮时被调用,而OnWizardNext()只是在用户单击“下一步”按钮时被调用。OnWizardNext()还被用来完成其它目的,比如,它可以直接将向导引导到指定的页面而不是按顺序的下一页。
例子工程的向导还有另外两个页面,CWizBkPicturePage 和 CWizFinishPage,由于它们和前面的两个页面相似,我就不再详细介绍它们,想了解它们的细节可以查看源代码。
其他的界面考虑 置中一个属性表属性页和向导的默认位置是出现在父窗口的左上角:
这看起来有点不爽,还好有方法可以补救。第一种方法是重载CPropertySheetImpl::PropSheetCallback()函数,在这个函数中将属性表置中。PropSheetCallback()是MSDN中介绍的PropSheetProc()的回调函数,操作系统在属性表创建时调用这个函数,WTL也是利用这个时间子类化属性表窗口的。所以我们的第一种尝试是:
class CAppPropertySheet : public CPropertySheetImpl<CAppPropertySheet>
{
//...
static int CALLBACK PropSheetCallback(HWND hWnd, UINT uMsg, LPARAM lParam)
{
int nRet = CPropertySheetImpl<CAppPropertySheet>::PropSheetCallback (
hWnd, uMsg, lParam );
if ( PSCB_INITIALIZED == uMsg )
{
// center sheet... somehow?
}
return nRet;
}
};
更多精彩
赞助商链接