MFC Page 和Sheet 控件使用例子
2013-12-23 16:33
549 查看
目的:学习使用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);
这样当最后点击完成的时候可以弹出总的选择。
步骤:
新建一个对话框类型的工程
利用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);
这样当最后点击完成的时候可以弹出总的选择。
相关文章推荐
- MFC 树控件使用例子
- MFC中使用Tab Control从CTabCtrl控件类继承自己的类(CTabSheet)来处理。
- MFC中ListControl控件的使用
- MFC的CStatic控件验证码例子
- MFC中使用Picture控件显示摄像头1.0
- C++ MFC combo box和list control控件的使用
- Repeater数据控件与aspnetpager分页控件使用例子:
- VC/MFC之ListCtrl控件使用经验总结
- VC/MFC之ListCtrl控件使用经验总结
- MFC Tab Control控件的详细使用
- MFC 关于控件变量的使用
- VC++ CTabCtrl控件自定义宏使用例子
- MFC Icon使用例子
- MFC:Tab Control 控件的使用
- MFC皮肤加载例子和皮肤使用方法
- VC/MFC中的CComboBox控件使用详解
- MFC 在回调函数中使用成员或控件(多线程)
- MFC中ListControl控件的使用
- MFC中Tab控件的使用方法
- MFC 列表视图控件List Control 使用一