CPropertySheet
OnSetActive:获得焦点的时候
新建一个对话框类型的工程
利用 insert dialog 添加两个对话框
打开新添加的对话框,右击 classWizard 选择新添加一个类,如下图
单机 ok 添加类名和 basic 类型分别为“Cpage1,CPropertyPage”“ Cpage2,CPropertyPage”
如
:
下
图
在两个对话框里选中按钮“OK”“Cancel”组件,右键 property,取消 visible
如
下
图
在两个对话框里分贝添加一些按钮,如在 Cpage1 里添加:
为 Cpage2 的控件添加成员变量如下图
在工具栏里面单机 ViewClassWizard Add Classnew如下图
单击 OK
在 Cpage1 里面右击 classWinzerd,添加如下函数
Add Function Edit Code,添加如下代码
BOOL Cpage1::OnSetActive()
{
((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_NEXT);
return CPropertyPage::OnSetActive();
}
在 Cpage1 里面右击 classWinzerd,添加如下函数,Add Function Edit Code,添加如下代
码
LRESULT Cpage1::OnWizardNext()
{
int count;
CString s;
count=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO4);
if(count==0)
{
MessageBox("error!");
return -1;
}
else
{
GetDlgItemText(count,s);
MessageBox("职业是:"+s);
}
return CPropertyPage::OnWizardNext();
}同理在 Cpage2 里进行如下操作:
添加如下代码
BOOL Cpage2::OnSetActive()
{
// TODO: Add your specialized code here and/or call the base class
((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_FINISH);
return CPropertyPage::OnSetActive();
}
添加如下代码:
BOOL Cpage2::OnWizardFinish()
{
int i,
m[4]={IDC_CHECK1,IDC_CHECK2,IDC_CHECK3,IDC_CHECK4};
CString e,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
Csheet a("调查表");
//a.SetWizardMode();//可以省略,不省略是另一种模式
a.DoModal();
}
省略 a.SetWizardMode();
模式如下
不省略模式如下:
完成!!!
注:可以添加 page1 的私有成员 CString s,page2 的私有成员 CString g,将选择了 page1 的
内容 s 中,将选择了 page2 的内容 g 中。再做如下处理
CString s1,s2;
Csheet a("调查表");
a.SetWizardMode();//可以省略,不省略是另一种模式
a.DoModal();
MessageBox("职业是:"+a.p1.s+" "+"爱好是:"+a.p2.g);
这样当最后点击完成的时候可以弹出总的选择。