對話方塊類CDialog

2022-08-21 04:18:09 字數 2214 閱讀 4324

一、對話方塊資源

1、相關類

cdialog類 -父類是cwnd,本質上也是乙個視窗。是對話方塊類的頂層父類。

ccommondialog類 -父類是cdialog類。稱為通用對話方塊。mfc提供了6個通用對話方塊,都是ccommondialog類的子類,包括:檔案對話方塊、顏色對話方塊、字型對話方塊、查詢替換對話方塊、列印對話方塊、列印設定對話方塊。

cpropertypage -父類是cdialog類,屬性頁對話方塊。

2、分類

模式對話方塊和非模式對話方塊

3、使用mfc的類建立基於模式對話方塊的應用程式

3.1插入對話方塊資源,並與對話方塊類關聯

3.2建立和顯示  cdialog::domodal()

3.3關閉  cdialog::onok()/oncancel()

4、使用mfc的類建立基於非模式對話方塊的應用程式

4.1插入對話方塊資源,並與對話方塊類關聯

4.2建立和顯示與一般框架視窗類似

4.3關閉需要程式處理

1)重寫onok和oncancle函式,在函式中,呼叫destroywindow()函式

2)重寫postncdestroy()函式,在函式中,delete this;

5、domodal()函式的執行過程

5.1查詢和載入對話方塊資源

5.2將父視窗設定為不可用狀態

5.3建立和顯示對話方塊

5.4進入對話方塊的訊息迴圈

5.5點選ok/cancel/關閉按鈕時,跳出迴圈,隱藏對話方塊視窗

5.6將父視窗設定為可用的和活動的狀態

5.7銷毀對話方塊視窗

5.8釋放對話方塊資源

5.9函式執行結束,得到domodal函式的返回值

二、對話方塊上的控制項操作

對話方塊的初始化函式:cdialog::oninitdialog()

1、方式一:通過呼叫cwnd::getdlgitem()函式,根據控制項id獲取控制項物件指標,操作控制項即可。

cwnd::getwindowtext--獲取控制項上顯示的文字

cwnd::setwindowtext--設定控制項上顯示的文字

cwnd::getdlgitemtext--獲取指定id的控制項上的文字,結合了getdlgitem和getwindowtext的功能

cwnd::setdlgitemtext--設定指定id的控制項上的文字

2、方式二:對話方塊的資料交換技術(ddx)

將控制項和乙個對話方塊類的成員變數繫結,可以通過操作成員變數達到操作控制項的目的。

1)定義與控制項繫結的成員變數

2)在對話方塊類的標頭檔案中會自動增加成員變數的宣告;在對話方塊類的建構函式中會對成員變數初始化;在對話方塊類的dodataexchange函式中會自動實現對話方塊控制項與類成員變數的繫結關聯    

// dialog data

//;int     m_num1;

int     m_num2;

int     m_num3;

//}}afx_data

ctestdlg::ctestdlg(cwnd* pparent /*=null*/)

: cdialog(ctestdlg::idd, pparent)

}afx_data_init

m_biscreated=false;

}

void ctestdlg::dodataexchange(cdataexchange* pdx)

}afx_data_map

}

ddx_control()  //控制項型別的繫結

ddx_text()  //值型別的繫結

ddx_:對話方塊資料交換函式

ddv_:對話方塊資料校驗函式

3)通過成員變數完成對控制項的操作

4)值型別的繫結,還需呼叫updatedata(bool)函式

updatedata(true); -將控制項中的值賦值給變數

......//對成員變數的操作

updatedata(false); -將變數的值顯示到控制項上

5)ddx的實現原理

1--控制項型別的繫結

ddx_control(pdx,idok,m_wndok)else{

//將變數的值設定到控制項的視窗上

afxsetwindowtext(hwndctrl, value);

例子1:使用ddx完成登入的驗證

例子2:採用兩種不同的方式實現加法器

C dialog 對話方塊

c winform中有兩種對話方塊 選擇檔案檔案對話方塊 openfiledialog dialog new openfiledialog 是否支援多個檔案的開啟?dialog.multiselect false 標題 dialog.title 請選擇 檔案型別 dialog.filter 或 jp...

對話方塊工具類(一) 選擇對話方塊

選擇對話方塊 對話方塊的用途很廣泛,很多時候,這些對話方塊我們都可以復用,這樣能節省下來很多時間,所以今天在這裡把關於對話方塊相關的 整理一下,以便於日後閱讀,日後如果有發現新的用法,也會在這裡更新。今次利用乙個呼叫系統資源和選擇對話方塊結合起來。private void showchoosedia...

對話方塊 訊息對話方塊

我們在使用windows系統的過程中經常會見到訊息對話方塊,提示我們有異常發生或提出詢問等。因為在軟體開發中經常用到訊息對話方塊,所以mfc提供了兩個函式可以直接生成指定風格的訊息對話方塊,而不需要我們在每次使用的時候都要去建立對話方塊資源和生成對話方塊類等。這兩個函式就是cwnd類的成員函式mes...