MFC程序员的WTL指南(9)属性页与向导
2006-07-22 22:03:05 来源:WEB开发网核心提示: void CMainFrame::OnOptions ( UINT uCode, int nID, HWND hwndCtrl ){CAppPropertySheet sheet ( _T("PSheets Options"), 0 );sheet.m_pgBackgr
void CMainFrame::OnOptions ( UINT uCode, int nID, HWND hwndCtrl )
{
CAppPropertySheet sheet ( _T("PSheets Options"), 0 );
sheet.m_pgBackground.m_nColor = m_view.m_nColor;
sheet.m_pgBackground.m_nPicture = m_view.m_nPicture;
if ( IDOK == sheet.DoModal() )
m_view.SetBackgroundOptions ( sheet.m_pgBackground.m_nColor,
sheet.m_pgBackground.m_nPicture );
}
创建一个向导样式的属性表创建一个向导和创建一个属性表很相似,这并不奇怪,只需稍做修改添加“上一步”和“下一步”按钮就行了。和MFC一样,你需要重载OnSetActive()函数并调用SetWizardButtons()使相应的按钮可用。我们先从一个简单的介绍页面开始,它的ID是IDD_WIZARD_INTRO:
注意这个页面没有标题栏文字,因为向导中的所有的页面通常都有相同的标题,我更愿意在CPropertySheetImpl的构造函数中设置这些文字,然后每个页面使用这个字符串资源。这就是为什么我只需要改变一个字符串就能改变所有页面标题文字的原因。
关于这个页面的实现代码在CWizIntroPage类中:
class CWizIntroPage : public CPropertyPageImpl<CWizIntroPage>
{
public:
enum { IDD = IDD_WIZARD_INTRO };
// Construction
CWizIntroPage();
// Maps
BEGIN_MSG_MAP(COptionsWizard)
CHAIN_MSG_MAP(CPropertyPageImpl<CWizIntroPage>)
END_MSG_MAP()
// Notification handlers
int OnSetActive();
};
构造函数使用(引用)一个字符串资源ID来设置页面的文字:
更多精彩
赞助商链接