WEB开发网
开发学院软件开发VC MFC程序员WTL指南(9)属性页与向导 阅读

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;
   }
};

上一页  2 3 4 5 6 7 8  下一页

Tags:MFC 程序员 WTL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接