向导式对话框

来源:互联网 发布:em231cn tc编程 编辑:程序博客网 时间:2024/05/16 19:41

属性页对话框

 分类

  标签式和向导式

  相关类

 CPropertyPage-父类是CDialog类,称为属性页或页面对话框。

 CPropertySheet-父类是CWnd,称为属性表单。

  一个完整的属性页对话框由一个属性表单+多个属性页组成。属性页嵌套在属性表单内。

标签式属性页的创建步骤:

 添加新的类,父类是CPropertySheet类。

 当控件的值发生改变时,将应用按钮设置为可用

     CPropertyPage::SetModified(TRUE);

虚函数的方式

     CPropertyPage::OnApply

     CPropertyPage::OnOK

     CPropertyPage::OnCancel

新建一个MFC当文档应用程序,为菜单添加一个菜单项,在该菜单项的点击处理函数中弹出我们的属性页对话框。

 



添加菜单项

插入对话框资源,注意选择PROPPAGE类型的对话框资源

 

双击他们通过类向导生成相应的类,注意选择父类为CpropertyPage

这里分别命名为:CPage1和CPage2

在工程上右键选择New Class 注意选择父类为CpropertySheet, 这里类名我设置为:ClabelSheet,然后为该类添加两个成员变量:

[cpp] view plaincopyprint?

1.  CPage1 m_page1;    

2.  CPage2 m_page2;   

然后在ClabelSheet的两个构造函数中都添加属性页(这样无论调用哪个都可以正确添加):

[cpp] view plaincopyprint?

1.  AddPage (&m_page1);    

2.  AddPage (&m_page2);  


 设置每个页面的向导按钮,在属性页对话框对应的类中添加下面的函数在CPropertyPage::OnSetActive()函数中设置在页面中得到表单对象
 消息处理函数,在属性页对话框对应的类中添加下面的虚函数函数
        CPropertyPage::OnSetActive()
        CPropertyPage::OnCancel()
        CPropertyPage::OnWizardNext()
        CPropertyPage::OnWizardBack()
        CPropertyPage::OnWizardFinish()


第一个属性页对话框不应出现先一步按钮,来到CPage1类,添加OnSetAvtive()函数处理:

[cpp] view plaincopyprint?

1.  #include "LabelSheet.h"  

2.  BOOL CPage1::OnSetActive()   

3.  {  

4.      // TODO: Add your specialized code here and/or call the base class  

5.      // 获取父窗口指针(sheet)  

6.      CLabelSheet* pSheet = (CLabelSheet*)GetParent ();  

7.      // 设置只有"下一步"按钮可用  

8.      pSheet->SetWizardButtons (PSWIZB_NEXT);  

9.    

10.     return CPropertyPage::OnSetActive();  

11. }  

同理下一个设置对话框只能有 上一步 和 完成按钮

[cpp] view plaincopyprint?

1.  #include "LabelSheet.h"  

2.  BOOL CPage2::OnSetActive()   

3.  {  

4.      // TODO: Add your specialized code here and/or call the base class  

5.      // 获取父窗口指针(sheet)  

6.      CLabelSheet* pSheet = (CLabelSheet*)GetParent ();  

7.      // 设置:"上一步"完成按钮为可用状态  

8.      pSheet->SetWizardButtons (PSWIZB_BACK | PSWIZB_FINISH );  

9.        

10.     return CPropertyPage::OnSetActive();  

11. }  

 

0 0
原创粉丝点击