MFC 對話方塊 一

2021-08-26 14:35:03 字數 2070 閱讀 7892

mfc----對話方塊(一)

2023年03月14日

一.對話方塊的建立和顯示

1.在mfc中,所有的控制項類都是由cwnd類派生來的,因此,控制項實際上也是視窗,實際上,控制項通常是作為對話方塊的子視窗而建立的。

2.有兩種型別的對話方塊:模態對話方塊和非模態對話方塊。

3.在mfc中,對資源的操作通常都是通過乙個與資源相關的類來完成的。

4.建立模態對話方塊需要呼叫cdialog類的成員函式:domodal,該函式的功能時建立並顯示乙個模態對話方塊。

例:ctestdlg dlg;

dlg.domodal();

5.如果要建立非模態對話方塊,則需要利用cdialog類的create成員函式。當利用create函式建立非模態對話方塊時,還需要呼叫showwindow函式將這個對話方塊顯示出來。在建立非模態對話方塊時,不能把對話方塊物件定義為區域性物件。對於這個問題,有兩種解決辦法,一種就是把這個對話方塊物件定義為視類的成員變數;另一種方式就是將它定義為指標,在堆上分配記憶體。在堆上分配的記憶體,與程式的整個生命週期是一致的。

例:ctestdlg *pdlg=new ctestdlg();

pdlg->create(idd_dialog1,this);

pdlg->showwindow(sw_show);

上面程式仍有問題,首先,定義的pdlg這個指標變數是乙個區域性物件,這樣當它的生命週期結束時,它儲存的記憶體位址就丟失了,那麼在程式中也就無法再引用它所指向的那塊記憶體了。這個問題的解決辦法有兩種:一是將這個指標變數定義為視類的成員變數,然後再視類的析構函式中呼叫delete函式來釋放這個指標變數所指向的那塊記憶體。二是在ctestdlg類中過載postncdestroy虛函式,釋放this指標所指向的記憶體。

二.動態建立按鈕

例:m_btn.create();

m_btn.destroywindow();

三.控制項的訪問

逗號表示式的結果是最後乙個表示式的返回值。

靜態文字控制項在預設狀態下是不傳送通告訊息的,並不會選中notify這個選項。為了使乙個靜態文字控制項能夠響應滑鼠單擊訊息,那麼需要進行兩個特殊的步驟:第一步,改變它的id;第二步,在它的屬性對話方塊中選中notify選項。

c語言提供了乙個這樣的轉換函式:atoi,可以將乙個由數字組成的字串轉換為相應的數值。還有另乙個相反的函式:itoa()。

在dodataexchage函式內部實現了對話方塊控制項與類成員變數的關聯。在程式**中從來不直接呼叫這個函式,而是通過cwnd類的另乙個成員函式updatedata來呼叫。

mfc提供了多種以ddx_為字首的函式,這些函式分別用於不同控制項的資料交換。

mfc也提供了多個以ddv_為字首的資料校驗函式。

ddx――dialog data exchage,對話方塊資料交換; ddv――dialog data validation,對話方塊資料校驗。

共有七種訪問對話方塊控制項的方式:

1.getdlgitem()->get(set)windowtext()

2.getdlgitemtext()/setdlgitemtext()

3.getdlgitemint()/setdlgitemint()

4.將控制項和整型變數相關聯

5.將控制項和控制項變數相關聯

6.sendmessage()

7.senddlgitemmessage()

四.對話方塊伸縮功能的實現

crect類有兩個成員函式 可以用來判斷乙個矩形是否為空:isrectempty(), isrectnull()\

呼叫cwnd類的getwindowrect可以獲得對話方塊的位置。

利用setwindowpos()函式來設定對話方塊的位置。

五.輸入焦點的傳遞

在mfc中,預設情況下,當在對話方塊中按下回車鍵時,會選擇對話方塊中預設按鈕的訊息響應函式來處理這一事件。

如果想要獲得對話方塊中某個控制項的下乙個控制項的控制代碼,可以呼叫getnextwindow函式、getwindow()、getnextdlgtabitem(),最後乙個函式是查詢具有tab stop屬性的控制項,並按tab順序依次查詢各控制項。

setwindowlong函式可以修改視窗已指定的過程函式。

getfocus()和setfocus()

mfc 子對話方塊控制父對話方塊 MFC對話方塊構架程式

遺憾的是 從來沒有被堅定選擇過,就像是,他只是剛好需要,你只是剛好在。網易雲熱評 一 對話方塊架構分類 1 模式對話方塊,彈出來不能進行其他操作 2 無模式對話方塊,彈出來後可以進行其他操作 二 新建win32應用程式 模式對話方塊 1 建立 2 修改屬性 3 新增dialog資源 4 包含標頭檔案...

MFC 對話方塊

1 建立對話方塊模板,設定對話方塊屬性 cadditionddlg 主對話方塊類 顯示的主要介面 addition的資源樹 4個子項 dialog 對話方塊 含有2個對話方塊模板 id為idd aboutbox 關於對話方塊模板 idd addtion dlalog 主對話方塊模板 lcon 圖示 ...

MFC擴充套件對話方塊 即收縮對話方塊

mfc擴充套件對話方塊 即收縮對話方塊 效果圖如下,擴充套件前 上 擴充套件後 下 上下擴充套件 具體步驟如下 1.在.h檔案中新增如下 1private 2boolm shrink 標記是否收縮 3intm winheight 儲存對話方塊的高度 4intm shrinkheight 收縮後的對話...