對(duì)話框2
本章節(jié)繼續(xù)講解對(duì)話框的有關(guān)知識(shí),以及屬性表單和向?qū)У膭?chuàng)建。
8.1屬性表單和向?qū)У膭?chuàng)建
一個(gè)屬性表單是由一個(gè)或者多個(gè)屬性頁組成的。要?jiǎng)?chuàng)建一個(gè)屬性表單,首先要?jiǎng)?chuàng)建一個(gè)CPropertySheet屬性頁和幾個(gè) IDD_PROPPAGE_類型的選項(xiàng)頁,創(chuàng)建頁面完成之后。在PropertySheet類頁面添加需要引入選項(xiàng)頁的頭文件,同時(shí)創(chuàng)建該類的對(duì)象,并調(diào)用AddPage函數(shù),將選項(xiàng)頁添加到屬性表單中。
1、添加頭文件 #include "head.h";
2、創(chuàng)建該類的對(duì)象 head head1;
3、將對(duì)象添加到屬性列表中 AddPage(&head1)。
當(dāng)添加多個(gè)選項(xiàng)頁的時(shí)候,最后顯示的順序和添加的順序一致。
如果要顯示一個(gè)屬性表單,可以通過調(diào)用模態(tài)對(duì)話框的形式顯示。比如說一個(gè)按鈕事件
1 void CMenuListDlg::OnButton1()
2 {
3 // TODO: Add your control notification handler code here
4 CPropSheet cps("list");
5 //cps.SetWizardMode();//設(shè)置表單顯示方式
6 cps.DoModal()
7 }
在創(chuàng)建一個(gè)屬性表單對(duì)象的時(shí)候,必須初始化對(duì)象的一個(gè)名稱參數(shù)。
8.2屬性向?qū)У陌粹o屬性
當(dāng)把一個(gè)屬性表單的導(dǎo)航設(shè)置為上一步,下一步的瀏覽方式的時(shí)候,需要對(duì)當(dāng)前選項(xiàng)卡下的導(dǎo)航做一些設(shè)置,如第一個(gè)頁面不需要上一步,最后一個(gè)頁面不需要下一步。要設(shè)置這些按鈕的顯示屬性,可以通過SetWizardButtons函數(shù)來設(shè)置這些按鈕的顯示屬性。
1 SetWizardButtons( DWORD dwFlags );
在屬性表單的選擇過程中,當(dāng)一個(gè)頁面變成活動(dòng)頁的時(shí)候,應(yīng)用程序就會(huì)調(diào)用該選項(xiàng)卡的OnSetActive()函數(shù),也就是可以在這個(gè)時(shí)候設(shè)置按鈕屬性。要在一個(gè)選項(xiàng)卡的中訪問父框架,可以使用GetParent()來獲取父框架指針,可以需要對(duì)返回的指針做一個(gè)強(qiáng)制轉(zhuǎn)化為 CPropertySheeet類型的。設(shè)置頂一個(gè)活動(dòng)頁的按鈕屬性為。
1 BOOL CProp1::OnSetActive()
2 {
3 // TODO: Add your specialized code here and/or call the base class
4 ((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_NEXT);
5 return CPropertyPage::OnSetActive();
6 }
由于在第一個(gè)頁面設(shè)置了父框架的按鈕屬性,在之后的每一個(gè)頁面都要做對(duì)應(yīng)本頁面的屬性設(shè)置。
在設(shè)置了按鈕的顯示屬性之后,可以同時(shí)添加按鈕的響應(yīng)事件。
01 LRESULT CProp1::OnWizardNext()
02 {
03 // TODO: Add your specialized code here and/or call the base class
04 UpdateData();//需要更新一下數(shù)據(jù)
05 if(判斷事件)
06 {
07 //響應(yīng)結(jié)果
08 return -1;
09 }
10 return CPropertyPage::OnWizardNext();
11 }
在執(zhí)行判斷事件之前,需要先更新下頁面上的一些操作而引發(fā)的一些初始數(shù)據(jù)的變化(如選擇框的選擇等等)。
相關(guān)推薦:
2012年計(jì)算機(jī)等考四級(jí)數(shù)據(jù)庫工程師備考筆記匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |