向导对话框
向导对话框实际上是一种特殊的属性表,和属性表不同的是,它能使用按钮来完成从一页到另一页的移动,而不是使用选项卡。我们用MFC AppWizard(exe)来建立新的程序时,就是用向导对话框完成的整
个过程,图3.7.1就是这个过程的
第一步,点击Next到下一步。
由于向导是一种特殊的属性表,
因此与其对应的MFC类也是属性
表类CpropertySheet和属性页类
CpropertyPage,在向导程序中,属
性表的创建方法没有改变,只是在
调用DoModel函数之前应调用
SetWizardMode(设置向导模式)函数, 图3.7.1 建立新项目过程的第一步
将属性表的操作方式设置为向导模式。
在向导模式下,每一个属性页都有Back、Next、Cancel按钮,由于每次显示向导的特定页时,MFC自动调用OnSetActive()(设置活动页函数)函数,因此我们可以重载OnSetActive函数,在此函数中利用SetWizardButton(设置属性页按钮显示方式)设置希望出现的按钮,在向导程序的最后一页,可以通过用SetFinishText(设置Finish命令按钮中的文本)设置Finish按钮所显示的文字,同时隐藏”上一步(Back)”按钮和”下一步(Next)”按钮。
例3.28 创建向导对话框
(1)创建一个基于对话框的应用程序,名为:向导对话框
(2)创建属性页对话框和属性页对话框类并添加相应的消息映射函数
1)Insert ResourceDialogIDD_PROPPAGE_MEDIUMNew,创建了第一个对话框,将其ID改为:IDD_STEP1,将其Language属性设置为Chinese[P.R.C]。并为该对话框建类,类名为:Cpage1,基类为:CpropertyPage。
2)删除对话框上的原有控件,在控件工具栏中拖到对话框一个静态文本,静态文本的属性Caption处写:第一个对话框,再拖过一个静态图片控件,将一个.bmp图形Import(导入)到程序中,再把这个图形加到这个图片控件上,如图3.7.2所示。
利用ClassWizard为类Cpage1增加消息映射函数OnSetActive,在此函数中激活Next按钮,代码如下:
BOOL Cpage1::OnSetActive()
{ CPropertySheet *pSheet=(CPropertySheet *)GetParent();
ASSERT_KINDOF(CPropertySheet,pSheet);
pSheet->SetWizardButtons(PSWIZB_NEXT);
return CPropertyPage::OnSetActive();