VC下一步

1.   類CPropertyPage   是從CDiaglog中派生出來的,具有Diaglog的基本性質,需要注意的是它的樣式必須是Child。   
2.   類CPropertySheet   是一個屬性表,也是一個窗體,相當一個容器,用來存放所有的CpropertyPage。它不是   從CDialog   派生出來的,但是它可以象普通對話框類似的操作,   如DoModal(),當用   DoModal()顯示   後,它就包含了“取消”、“上一步”、“下一步”   等基本按鈕。 
下面給出一個實例   
①   新建一個   VC++   MFC   AppWizard   工程,命名爲TraditionalWizard,並選擇Dialog   Based   樣式。   
②   在自動生成   的Dialog   資源中加入一個按鈕IDC_BENGINWIZ   用來啓動向導。   
③   創建   CPropertyPage。新建Dialog   資源,命名爲IDD_STEP1,注意一定要將新建對話框的Style屬性設置成Child   和邊界屬性設置爲Thin,並且不要生成一個新類。   
用ClassWizard   生成一個新類,命名爲CStep1,基類爲CPropertyPage,且將Dialog   ID   設置爲剛生成的資源IDD_STEP1。這樣就生成了一個新屬性頁Step1。如此操作就可以   同樣生成Step2、Step3   屬性頁。爲了方便顯示,在每個對話框都放置了一個控件,用來表示當前是哪一步。 
④   創建   CPropertySheet。新建一個類,命名爲CWizard,基類爲CPropertySheet。並將屬性頁和屬性表關聯起來。代碼爲 


//將代碼放在按鈕IDC_BEGINWIZ的Click事件中 
CWizard   MyWizard(_T( "我的嚮導   "),this,1);   //生成一個屬性表 
CStep1   MyStep1;     //屬性頁1   
CStep2   MyStep2;   //屬性頁2   
CStep3   MyStep3;   //屬性頁3   
MyWizard.AddPage(&MyStep1);   //添加屬性頁1   
MyWizard.AddPage(&MyStep2);   //添加屬性頁2   
MyWizard.AddPage(&MyStep3);   //添加屬性頁3 
MyWizard.SetWizardMode();       //將屬性表設置成嚮導樣式 
MyWizard.SetActivePage(&MyStep1);   //設置第一頁爲第一步 
MyWizard.DoModal();   //顯示屬性表 

⑤協調顯示。在每一頁爲當前頁時,都會觸發OnSetActive事件,故對每一個屬性頁都要重載該函數,在CStep1類上選擇Add   Virtual   Function   ...。因爲顯示第一頁時,不存在“上一步”,故在CStep1的   OnSetActive函數中需要添加如下代碼:   //代碼放在OnSetActive函數中 
CPropertySheet*   pParent=(CPropertySheet*)GetParent();   //   獲得屬性表的指針 
pParent-> SetWizardButtons(PSWIZB_NEXT);   //   設置屬性表的顯示按鈕只爲下一步 
SetDlgItemText(IDC_TEXT1, "這是嚮導的第一步 ");   

同樣在顯示中間頁時應該設置成即有“上一步”,也有“下一步”,代碼爲:   CPropertySheet*   pParent=(CPropertySheet*)GetParent();   
pParent-> SetWizardButtons(PSWIZB_NEXT|PSWIZB_BACK);     
SetDlgItemText(IDC_TEXT2, "這是嚮導的第二步 ");   

最後在顯示最後一頁時只顯示“完成”和“上一步”,代碼爲:   CPropertySheet*   pParent=(CPropertySheet*)GetParent();   
pParent-> SetWizardButtons(PSWIZB_FINISH|PSWIZB_BACK);   
SetDlgItemText(IDC_TEXT3, "這是嚮導的第三步 ");   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章