mfc利用CPropertySheet、CPropertyPage实现下一步,下一步的类似安装程序的界面

mfc利用CPropertySheet、CPropertyPage实现下一步,下一步的类似安装程序的界面

(2013-04-16 16:45:36)
标签: 

cpropertysheet、cpro

分类: C/C

   CPropertyPage 是一个从CDialog派生而来的一个类,基本功能与对话框类一样,

   CPropertySheet不是一个CDialog的派生类,他是派生自CWnd的,相当于一个容器。

1.重载CPropertySheet

  在类视图添加类CAttackSettingProSheet,基类选择CPropertySheet

2.插入IDD_PROPPAGE类型的dialog,并通过类向导添加类。

  以此添加CAttackSettingPage1,CAttackSettingPage2等

3.在CAttackSettingProSheet中添加变量

  CAttackSettingPage1 page1;
  CAttackSettingPage2 page2;

  并在构造函数中添加如下代码:

   this->SetWizardMode();//设置为向导模式,默认为tab页模式
   //添加page
   this->AddPage(&page1);//会触发OnInitDialog
   this->AddPage(&page2);
 4.取消帮助按钮

   在OnInitDialog中添加如下代码:

   CWnd *pWnd;
   pWnd = GetDlgItem (IDHELP);//修改此处ID也可以取消其他按钮
   pWnd->ShowWindow (FALSE);
 
   this->SetActivePage(&page1);//设置初始默认显示页

5.为“取消”按钮添加判断响应

  在CAttackSettingProSheet中添加如下函数:

  BOOL CAttackSettingProSheet::OnCommand(WPARAM wParam, LPARAM lParam)
{
 if(LOWORD(wParam)==IDOK ||LOWORD(wParam)==IDCANCEL)
 {
  if(MessageBox("确定要取消攻击配置吗?","温馨提示" ,MB_ICONEXCLAMATION|MB_OKCANCEL)==IDOK)
  {
   return CPropertySheet::OnCommand(wParam, lParam);
  } else{
   return TRUE;
  }
  
 }
 return CPropertySheet::OnCommand(wParam, lParam);

}

  别忘了自己加上函数生命

6.控制每个page的按钮

 在CAttackSettingPage1中添加如下代码:

BOOL  CAttackSettingPage1::OnSetActive( )
{

  //只有下一步,取消两个按钮,上一步不可用
  ((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_NEXT  );

   return CPropertyPage::OnSetActive();

}

 如果要显示上一步、下一步:

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

 如果要显示上一步,完成:

 ((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);
 

  别忘了函数声明

7.在page中处理下一步或完成点击事件

 重载函数LRESULT  OnWizardNext() 和BOOL  CAttackSettingPage4::OnWizardFinish()

 即添加:

LRESULT  CAttackSettingPage1::OnWizardNext()  
{

    //自己代码
    return CPropertyPage::OnWizardNext();
}

 BOOL  CAttackSettingPage2::OnWizardFinish()  
 {

   //自己代码
  return CPropertyPage::OnWizardFinish();

 }

8.最后一步调用显示

 //add by zqm
 CAttackSettingProSheet attackSettingProSheet("攻击设置向导");
 if(ID_WIZFINISH == attackSettingProSheet.DoModal())
 {

 }

搞定~

参考:http://hi.baidu.com/lifj_hogan/item/0ec2f0f1f77f5a14d6ff8cf6

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值