vc学习历程(9)--向导的创建

其实实现向导的创建,跟实现属性页的创建是一样的步骤的,只不过它是在属性表单对象的DoModal函数之前,调用SetWizardMode 函数。

void CMy20080808View::OnPropertysheet()
{
 // TODO: Add your command handler code here

 PropSheet.SetWizardMode();
 CPropSheet propSheet("属性表单");
 propSheet.DoModal ();
 

这样就实现了向导的基本框架了;

在属性页的OnSetActice 函数中调用SetWizardButtons 这个函数,当属性页被选中,从而成为一个活动的页面时,应用程序框架就会调用OnSetActive这个函数;OnSetActive函数是一个虚函数,因此,应该在属性页子类中重写这个函数,然后根据该属性页设置按钮;

设置按钮通过CPropertySheet 函数提供的SetWinzardButtons 成员函数,来实现;

如何实现属性表单对象,属性表单是属性页的父窗口,所以可以通过GetParent函数来获取属性页的父窗口的指针,即属性表单的指针;

GetParent 函数返回的是CWnd类型的指针,所以我们需要通过强制转换,将CWnd类型的指针转换为CPropertySheet类型的指针;

代码:

BOOL CProp1::OnSetActive()

{

     ((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_NEXT);

    return CPropertyPage::OnSetActive();

}

其中void SetWizardButtons( DWORD dwFlags );

Parameters

dwFlags

A set of flags that customize the function and appearance of the wizard buttons. This parameter can be a combination of the following values:

  • PSWIZB_BACK   Back button  设置上一步

  • PSWIZB_NEXT   Next button    设置下一步

  • PSWIZB_FINISH   Finish button   设置完成

  • PSWIZB_DISABLEDFINISH   Disabled Finish button    设置禁用的完成按钮

向导上面的具体实现:

如果完成了第一页的操作,当点击“下一步”时,程序会调用OnWizardNext这个虚函数,如果这个函数返回0,那么程序将自动进入当前向导的下一个属性页,如果返回-1,将禁止属性页发生变更。

控件与成员变量的数据交换是通过DoDataExchange 函数来完成的,而程序中并不直接调用这个函数,而是通过调用UpdateData 函数来调用他,对于UpdateData函数,当它的参数为TRUE 时,是从控件得到成员变量的值;当参数值为FALSE时,是用成员变量的值来初始化控件。,这个参数的默认值为TRUE。

在MFC编程中,对控件的操作都是通过相关的MFC类来完成的。

一般情况下,CPropertySheet类的DoModal函数的返回值是IDOK或IDCANCEL,但是如果属性表单已经被创建为向导了,那么该函数的返回值将是ID_WIZFINISH 或IDCANCEL。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值