对话框编程二

一、逃跑按钮的巧妙实现。
1,添加按钮类CSeanBtn,基类为CButton;
2,在对话框上添加2个按钮IDC_BUTTON1,IDC_BUTTON2;
3,对两个按钮分别添加关联控件变量:
  CSeanBtn m_btn1;//关联IDC_BUTTON1
   CSeanBtn m_btn2;//关联IDC_BUTTON2
4,在CSeanBtn类中添加一个指向CSeanBtn类型的指针变量 m_pBtn(用于指向另一个按钮)
5,交换地址
   m_btn1.m_pBtn=&m_btn2;
   m_btn2.m_pBtn=&m_btn1;
6,对CSeanBtn类添加WM_MOUSEMOVE虚函数处理
   CSeanBtn::OnMouseMove()
   {
      ShowWindow(SW_HIDE);  //隐藏自己
       m_pBtn->ShowWindow(SW_SHOW);//显示别人
   }

二、制作属性表单 PropertySheet
1,插入属性页资源(在Dialog资源分类里)IDD_PROP1,IDD_PROP2,IDD_PROP3
2,分别为每个属性页资源添加一个类CProp1,CProp2,CProp3(基类为CPropertyPage);
3,添加一个属性表单类CSeanPropSheet(基类为CPropertySheet)
4,为CSeanPropSheet类添加成员变量
   private:
     CProp1 m_prop1;
      CProp2 m_prop2;
      CProp3 m_prop3;
5,将三个属性页成员添加到属性表单中,方法是:
   在CSeanPropSheet类的两个重载函数中均添加以下代码:
   CSeanPropSheet::CSeanPropSheet(....)
   {
  AddPage(&m_prop1);
  AddPage(&m_prop2);
  AddPage(&m_prop3);
   }
   至此,属性表单类设计完成
6,主程序显示属性表单
   CSeanPropSheet propsheet;
   propsheet.DoModal();//显示模态属性表单
   //propsheet.Create(..);//显示非模态属性表单
   propsheet.Detach();

三、制作向导 Wizard
   
1,制作方法与属性表单方法制作完全一样,只是在主程序调用DoModal之前需调用SetWizardMode成员函数.如:
 CSeanPropSheet propsheet;
 propsheet.setWizardMode();//设置表单为向导表单
  propsheet.DoModal();
2,修改或取消向导中属性页的按钮(如取消第一页中的"上一步",更改最后页的"下一步"为"完成")
 重写CProp1(或CProp2或CProp3)的虚函数OnSetActive,在此函数中调用CSeanPropSheet对象的  SetWizardButtons设置本属性页的按钮:

 BOOL CProp1::OnSetActive()
 { //只设置"下一步"按钮
  ((CPropertySheet *)GetParent())->SetWizardButtons(PSWIZB_NEXT);
  return CPropertyPage::OnSetActive();
 }
 BOOL CProp2::OnSetActive()
 { //设置"下一步"和"上一步"按钮
  ((CPropertySheet *)GetParent())->SetWizardButtons(PSWIZB_NEXT | PSWIZB_BACK);
  return CPropertyPage::OnSetActive();
 }
 BOOL CProp3::OnSetActive()
 { //设置"完成"和"上一步"按钮
  ((CPropertySheet *)GetParent())->SetWizardButtons(PSWIZB_FINISH |       PSWIZB_DISABLEDFINISH | PSWIZB_BACK  );
  return CPropertyPage::OnSetActive();
 }
3,对向导页上按钮的事件响应
 重写CProp1(或CProp2或CProp3)类的虚函数OnWizardNext,OnWizardBack,OnWizardFinish分别响应用户点击"下一步","上一步","完成"按钮

4,向导最后一步用户点击的是取消还是完成?
 根据DoModal()的返回值判断
 if(ID_WIZFINISH==prop.DoModal())
 { 
        //用户按下"完成"
 } 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值