logo资料库

MFC之选项卡事件.doc

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
CPropertySheet OnSetActive:获得焦点的时候 新建一个对话框类型的工程 利用 insert dialog 添加两个对话框 打开新添加的对话框,右击 classWizard 选择新添加一个类,如下图 单机 ok 添加类名和 basic 类型分别为“Cpage1,CPropertyPage”“ Cpage2,CPropertyPage” 如 : 下 图 在两个对话框里选中按钮“OK”“Cancel”组件,右键 property,取消 visible 如 下 图
在两个对话框里分贝添加一些按钮,如在 Cpage1 里添加: 为 Cpage2 的控件添加成员变量如下图 在工具栏里面单机 ViewClassWizard Add Classnew如下图
单击 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); 这样当最后点击完成的时候可以弹出总的选择。
分享到:
收藏