目的:学习使用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);
这样当最后点击完成的时候可以弹出总的选择。