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