MFC Page 和Sheet 控件使用例子

来源:互联网 发布:刷网站流量软件 编辑:程序博客网 时间:2024/05/22 05:16

目的:学习使用page 和 sheet 控件

步骤:

新建一个对话框类型的工程

利用insert dialog添加两个对话框

打开新添加的对话框,右击classWizard 选择新添加一个类,如下图


单机ok添加类名和basic类型分别为“Cpage1,CPropertyPage”“ Cpage2,CPropertyPage”如下图:


在两个对话框里选中按钮“OK”“Cancel”组件,右键property,取消visible

如下图



在两个对话框里分别添加一些按钮,如在Cpage1里添加:



为Cpage2的控件添加成员变量如下图


在工具栏里面单击Viewè→ClassWizardè AddClassènewè如下图


单击OK

 

在Cpage1里面右击classWinzerd,添加如下函数


Add Function è Edit Code,添加如下代码

BOOL Cpage1::OnSetActive()

{

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

       returnCPropertyPage::OnSetActive();

}

在Cpage1里面右击classWinzerd,添加如下函数,Add Function Edit Code,添加如下代码


LRESULT Cpage1::OnWizardNext()

{

       intcount;

       CStrings;

       count=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO4);

       if(count==0)

       {

              MessageBox("error!");

              return-1;

       }

       else

       {

       GetDlgItemText(count,s);

      

       MessageBox("职业是:"+s);

       }

       returnCPropertyPage::OnWizardNext();

}同理在Cpage2 里进行如下操作:


添加如下代码

BOOL Cpage2::OnSetActive()

{

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

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

       returnCPropertyPage::OnSetActive();

}


添加如下代码:

BOOL Cpage2::OnWizardFinish()

{    

int i,

       m[4]={IDC_CHECK1,IDC_CHECK2,IDC_CHECK3,IDC_CHECK4};

       CStringe,g;

       for(i=0;i<4;i++)

       {            if(((CButton*)GetDlgItem(m[i]))->GetCheck())//循环获取多选组被选项的ID

              {     GetDlgItem(m[i])->GetWindowText(e);//将ID对应的标题放到e中

                     g+=e;

              }

       }    

       MessageBox("爱好是:"+g);//显示所有选择项

}

在sheet.h头文件里添加如下代码

添加头文件

#include "page1.h"

#include "page2.h"

 

添加公共成员

Cpage1 p1;

Cpage2 p2;

 

在ClassView里面双击Csheet的构造函数文件

在其函数里添加如下代码

Csheet::Csheet(LPCTSTR pszCaption, CWnd*pParentWnd, UINT iSelectPage)

       :CPropertySheet(pszCaption,pParentWnd, iSelectPage)

{

       AddPage(&p1);

       AddPage(&p2);

}

 

回到工程窗口,添加一个按钮,改名为“开始调查”,双击它,添加如下代码

#include " sheet.h"

void CChosecardDlg::OnButton1()

{

       //TODO: Add your control notification handler code here

              Csheeta("调查表");

//a.SetWizardMode();//可以省略,不省略是另一种模式

              a.DoModal();

}

省略a.SetWizardMode();

模式如下


不省略模式如下:


完成!!!

 

注:可以添加page1的私有成员CString s,page2的私有成员CString g,将选择了page1的内容s中,将选择了page2的内容g中。再做如下处理

CString s1,s2;

              Csheeta("调查表");

              a.SetWizardMode();//可以省略,不省略是另一种模式

              a.DoModal();

              MessageBox("职业是:"+a.p1.s+""+"爱好是:"+a.p2.g);

这样当最后点击完成的时候可以弹出总的选择


 

 

0 0
原创粉丝点击