對話框2
本章節(jié)繼續(xù)講解對話框的有關(guān)知識,以及屬性表單和向?qū)У膭?chuàng)建。
8.1屬性表單和向?qū)У膭?chuàng)建
一個屬性表單是由一個或者多個屬性頁組成的。要創(chuàng)建一個屬性表單,首先要創(chuàng)建一個CPropertySheet屬性頁和幾個 IDD_PROPPAGE_類型的選項頁,創(chuàng)建頁面完成之后。在PropertySheet類頁面添加需要引入選項頁的頭文件,同時創(chuàng)建該類的對象,并調(diào)用AddPage函數(shù),將選項頁添加到屬性表單中。
1、添加頭文件 #include "head.h";
2、創(chuàng)建該類的對象 head head1;
3、將對象添加到屬性列表中 AddPage(&head1)。
當(dāng)添加多個選項頁的時候,最后顯示的順序和添加的順序一致。
如果要顯示一個屬性表單,可以通過調(diào)用模態(tài)對話框的形式顯示。比如說一個按鈕事件
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)建一個屬性表單對象的時候,必須初始化對象的一個名稱參數(shù)。
8.2屬性向?qū)У陌粹o屬性
當(dāng)把一個屬性表單的導(dǎo)航設(shè)置為上一步,下一步的瀏覽方式的時候,需要對當(dāng)前選項卡下的導(dǎo)航做一些設(shè)置,如第一個頁面不需要上一步,最后一個頁面不需要下一步。要設(shè)置這些按鈕的顯示屬性,可以通過SetWizardButtons函數(shù)來設(shè)置這些按鈕的顯示屬性。
1 SetWizardButtons( DWORD dwFlags );
在屬性表單的選擇過程中,當(dāng)一個頁面變成活動頁的時候,應(yīng)用程序就會調(diào)用該選項卡的OnSetActive()函數(shù),也就是可以在這個時候設(shè)置按鈕屬性。要在一個選項卡的中訪問父框架,可以使用GetParent()來獲取父框架指針,可以需要對返回的指針做一個強制轉(zhuǎn)化為 CPropertySheeet類型的。設(shè)置頂一個活動頁的按鈕屬性為。
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 }
由于在第一個頁面設(shè)置了父框架的按鈕屬性,在之后的每一個頁面都要做對應(yīng)本頁面的屬性設(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)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |