色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

什么叫做對話框

洪振霞2年前25瀏覽0評論

什么叫做對話框?

對話框 一種次要窗口,包含按鈕和各種選項,通過它們可以完成特定命令或任務。

對話框與窗口有區別,它沒有最大化按鈕、沒有最小化按鈕、不能改變形狀大小 對話框:是人機交流的一種方式,用戶對對話框進行設置,計算機就會執行相應的命令。

對話框中有單選框、復選框等。

對話框的組成 對話框主要由兩部分組成。

對話框資源:可以使用對話框編輯器來配置對話框的界面,如對話框的大小、位置、樣式,對話框中控件的類型和位置等。

另外,我們還可以在程序的執行過程中動態創建對話框資源。

對話框類:在MFC程序中,可以使用向導幫助用戶建立一個與對話框資源相關聯的類,通常這個類由CDialog類派生。

對話框的類型 對話框可以分為模式對話框和無模式對話框兩種類型。

CDialog 為了能夠方便的操作對話框,MFC為用戶提供了CDialog類。

它是在屏幕上顯示對話框的基類,與對話框資源緊密相關,提供了管理對話框的接口,封裝了一些對話框的相關操作。

從CDialog的定義代碼可以看出,Cdialog提供了兩套構建Cdialog對象的系統,分別用于模式對話框和無模式對話框。

無模式對話框對象的構建過程,它首先調用缺省的構造函數生成對話框對象,然后調用Create函數創建和初始化對話框。

Cdialog類中的Create函數有兩種函數原型: BOOL Create( LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL ); BOOL Create( UINT nIDTemplate, CWnd* pParentWnd = NULL ); 其中, 參數lpszTemplateName是無模式對話框模板資源的標志符; 參數nIDTemplat是對話框模板資源的標志符,它通常以IDD_開頭(例如IDD_DIALOG1); 參數pParentWnd是指向對話框對象所屬的父窗口的指針(如果它為NULL,則表示對話框對象的父窗口是應用程序主窗口)。

如果希望對話框中它的父窗口創建后馬上被顯示,就必須把對話框模板設置為WS_VISIBLE形式。

否則,需要調用ShowWindow函數來顯示對話框。

對于模式對話框,其構造函數如下所示: CDialog( LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL ); CDialog( UINT nIDTemplate, CWnd* pParentWnd = NULL ); 構造函數的參數說明與無模式對話框的Create函數類似。

在模式對話框中,當創建了對話框對象后,可以通過調用DoModal函數來顯示對話框。

一般情況下,無論是模式對話框還是無模式對話框,都有兩個按鈕OK和CANCEL。

對話框為它們提供了默認的消息處理函數OnOk和OnCancel。

調用這兩個函數都將關閉對話框。

所不同的是,默認的OnOk函數中關閉對話框前將更新對話框數據,而默認的OnCancel函數不更新對話框數據。

當CDialog類檢測到OK或Cancel鍵時,它將調用::EndDialog函數。

EndDialog函數雖然結束了對話框應用程序,但卻并沒有刪除對話框對象,釋放內存。

這對于模式對話框來說,不是問題,它的生存時間不長,我們一般在棧上創建它們;但無模式對話框則不同,它的生存時間更長,我們通常在棧上創建它們,并且希望它在消失之前能夠刪除自己。

因此,大多數情況下,我們需要在無模式對話框中重載OnOK和OnCancel函數,加入DestroyWindows函數來徹底地刪除它。

對話框數據交換和驗證機制 在VC中,所有的對話框函數都是使用C++代碼實現的,它并沒有采用特殊的資源或“奇特”的宏,但卻可以很好地實現用戶與應用程序之間的交互工作,這里的關鍵就在于對話框應用程序中廣泛采用的對話框數據交換和驗證機制。

對話框數據交換(DDX,Dialog Data Exchange)用于初始化對話框中的控件并獲取用戶的數據輸入,而對話框數據驗證(DDV,Dialog Data Validation)則用于驗證對話框中數據輸入的有效性。

MFC在每個對話框類中提供了一個用于重載的虛函數——DoDataExchange來實現對話框數據交換和驗證工作。

對話框數據交換 如果使用DDX機制,則通常在OnInitDialog程序或對話框構造函數中設置對話框對象成員變量的初始值。

在對話框即將顯示前,應用程序框架的DDX機制將成員變量的值傳遞給對話框的控件,當對話框響應DoModal或Create而被顯示時,對話框控件將“顯示”這些值。

Cdialog類中的OnInitDialog函數默認時將調用CWnd類的UpdateData成員函數初始化對話框中的控件。

UpdateData函數的原型如下: BOOL UpdateData( BOOL bSaveAndValidate = TRUE ); 函數參數為TRUE,即將對話框及其控件中的數據傳遞給程序代碼中的成員變量; 函數參數為FALSE,即將類中的數據狀態傳遞給對話框及其控件。

當用戶重載DoDataExchange函數時,也就為每一個數據成員(控件)指定了一個DDX函數調用。

對話框數據驗證 除了調用DDX參數指定數據交換外,用戶還可以使用DDV函數進行對話框數據驗證。

在調用控件的DDX函數后,必須立即調用該控件的DDV函數。

大部分DDV函數的原型如下所示。

DDV_MinMaxCustom(pDX, Data, MinData, MaxData); 其中,參數pDX是一個指向CdataExchange對象的指針,參數Data中存放著即將被驗證的數據,后兩個參數用于定制數據的范圍。

CdataExchange類 如果僅僅需要使用對話框數據,一般沒有必要了解數據交換/驗證的核心內容。

但在了解了數據交換和驗證的實質后,用戶就可以編寫自己的數據交換和驗證代碼,定制DDX/DDV. 對話框控件 控件是一個可以與其交互以完成輸入或操作數據操作的對象,它也是一種特殊的窗口。

控件通常出現在對話框或工具欄中。

Windows提供了多種多樣的控件,在MFC應用程序中,能夠使用的控件通常可以分為三種。

1)windows公用控件:包括編輯控件、按鈕、列表框、組合框、滑動條控件等,另外也包括所有者描述的控件。

2)ActiveX控件:既可以在對話框中使用,也可以在HTML網頁中使用。

3)由MFC提供的其他控件類 我們主要介紹第一種類型的控件——Windows公用控件。

Windows操作系統提供了多種windows公用控件,這些控件對象都是可編程的,Visual C++的對話框編輯器支持將這些控件對象添加到對話框中。

用戶可以在工具箱的對話框編輯器中看到這些windows公用控件。

MFC為了更好的支持windows公用控件,提供了多種控件類,每一個控件類封裝一種控件,并提供相應的成員函數來管理操作控件。