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

MFC程序员WTL指南(9)属性页与向导

 2008-01-19 20:26:45 来源:WEB开发网   
核心提示:这就是向导的效果:添加更多的属性页,使用DDV为了使这个向导能够有点用处,MFC程序员WTL指南(9)属性页与向导(6),我们要为其添加一个设置视图背景颜色的页面,这个页面还将有一个checkbox演示如何处理DDV验证失败并阻止向导进行到下一页,然后检查m_bFailDDV的值,如果是TRUE就表示checkbox处

这就是向导的效果:

添加更多的属性页,使用DDV

为了使这个向导能够有点用处,我们要为其添加一个设置视图背景颜色的页面。这个页面还将有一个checkbox演示如何处理DDV验证失败并阻止向导进行到下一页。下面就是新的页面,ID是IDD_WIZARD_BKCOLOR:

这个类的实现代码在CWizBkColorPage类中,下面是相关的部分代码

class CWizBkColorPage :
   public CPropertyPageImpl<CWizBkColorPage>,
   public CWinDataExchange<CWizBkColorPage>
{
public:
   // some stuff removed for brevity...
   BEGIN_DDX_MAP(CWizBkColorPage)
     DDX_RADIO(IDC_BLUE, m_nColor)
     DDX_CHECK(IDC_FAIL_DDV, m_bFailDDV)
   END_DDX_MAP()
   // Notification handlers
   int OnSetActive();
   BOOL OnKillActive();
   // DDX vars
   int m_nColor;
protected:
   int m_bFailDDV;
};

OnSetActive()的工作和前面的介绍页面相同,它使“上一步”和“下一步”按钮可用。OnKillActive()是个新的处理函数,它触发DDV,然后检查m_bFailDDV的值,如果是TRUE就表示checkbox处于选中状态,OnKillActive()将阻止向导进行到下一页。

int CWizBkColorPage::OnSetActive()
{
   SetWizardButtons ( PSWIZB_BACK | PSWIZB_NEXT );
   return 0;
}
int CWizBkColorPage::OnKillActive()
{
   if ( !DoDataExchange(true) )
     return TRUE;  // prevent deactivation
   if ( m_bFailDDV )
     {
     MessageBox (
      _T("Error box checked, wizard will stay on this page."),
      _T("PSheets"), MB_ICONERROR );
     return TRUE;  // prevent deactivation
     }
   return FALSE;    // allow deactivation
}

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

Tags:MFC 程序员 WTL

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