用Visual C++創建自定義的應用程序向導

發表于:2007-04-27來源:作者:點擊數: 標簽:C++visual應用程序自定義創建
下載本文源代碼 應用程序向導是一種用來簡化用戶操作的程序,在Microsoft 的所有軟件產品中都存在應用程序向導,例如Office2000 中的Web 頁向導就是一個十分典型的應用程序向導,Visual C++提供的"App Wizard"也是一個應用程序向導。本實例給出了實現自己的
  下載本文源代碼

  應用程序向導是一種用來簡化用戶操作的程序,在Microsoft 的所有軟件產品中都存在應用程序向導,例如Office2000 中的Web 頁向導就是一個十分典型的應用程序向導,Visual C++提供的"App Wizard"也是一個應用程序向導。本實例給出了實現自己的應用程序向導的方法,程序編譯運行后的界面效果如圖一所示:


圖一、自定義向導程序界效果圖

  一、編程方法

  在Visual C++編程中,可以使用MFC提供的類CPropertySheet和類CPropertyPage方便地編寫一個向導程序。首先我們來介紹一下類CPropertySheet 和類CPropertyPage。屬性頁類CPropertyPage 是從類CDialog中派生出來的,具有Diaglog的基本性質,不過需要注意的是在將一個對話框模板關聯到CpropertyPage類時對話框模板的樣式必須設置為"Child"。類CPropertySheet 是一個屬性表,它也代表一個窗體,相當一個容器,用來存放所有的屬性頁CpropertyPage,CpropertySheet類不是從Cdialog類派生出來的,但是該類對象可以進行普通對話框似的操作,如使用DoModal()函數顯示屬性表后,它就包含了"取消"、"上一步"、"下一步" 等基本按鈕。為了將各個屬性頁添加到屬性表中,可以調用CpropertySheet::AddPage( CPropertyPage *pPage )。需要讀者朋友注意的一點是,一般情況下不直接使用CpropertySheet、CpropertyPage類,而是分別使用它們的子類,具體參見程序代碼部分。

  將屬性頁添加到屬性表中之后,就需要協調它們的顯示,也就是要決定某個屬性頁具體顯示"取消、上一步、下一步、完成、幫助"等幾個基本按鈕中的哪些按鈕。在屬性表中的某一屬性頁為當前頁時,會觸發OnSetActive事件,所以只需要對每一個屬性頁重載該函數來處理相應的工作。例如,當顯示第一頁時,由于不存在"上一步",故在該屬性頁的OnSetActive()函數中需要添加如下代碼:

clearcase/" target="_blank" >cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
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,"這是向導的第三步");

  從上面的代碼可以看出,決定當前屬性頁使用哪個按鈕關鍵是使用了CPropertySheet ::SetWizardButtons()函數,該函數的原型為:

void SetWizardButtons( DWORD dwFlags );

  參數dwFlags定義了屬性頁上具體顯示那些導航按鈕,該值是下列標志的組合:PSWIZB_BACK (Back button)、PSWIZB_NEXT( Next button)、PSWIZB_FINISH(Finish button)、PSWIZB_DISABLEDFINISH(Disabled Finish button)。

  因為CpropertySheet、CPropertyPage類不是一個可修改的資源,所以在程序中會發現改變向導按鈕的樣式會很困難,例如不能在"上一步"、"下一步就"等按鈕上添加圖標等;也不能修改向導按鈕的位置。為了實現一個性化向導的目的,我們可以不使用CPropertySheet類和CPropertyPage類,而自行設計一個向導程序。設計的基本思路是:采用標準的向導的工作方式,每一步就是一個對話框,向導本身也是一個對話框,用來容納每步對話框;當點擊"下一步"或"上一步"時,將相應的對話框定位到要顯示的位置;因為向導一般都包含很多步,每一步對應一個頁,為了管理這些頁,我們可以創建一個鏈表來管理每一步的對話框。具體實現參見代碼部分。

  二、編程步驟

  1、啟動Visual C++6.0,生成一個基于對話框的應用程序,將該程序命名為"CustomWizard"

  2、在程序的對話框模板中加入一個按鈕用來啟動向導,其ID設置為IDC_BENGINWIZ。另外加入一個集合框用來容納向導中的每個對話框,并根據該模板定義類"Cwizard";

  3、依次創建向導的每頁的對話框資源,命名為IDD_STEP1、IDD_STEP2、IDD_STEP3,然后根據資源模板生成新的類;

  4、添加代碼,編譯運行程序。

共2頁。 1 2 8 :

原文轉自:http://www.anti-gravitydesign.com

評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
...
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97