MFC的模態對話方塊建立與傳值

2021-10-16 04:06:59 字數 1773 閱讀 9680

路徑:

左下角「資源檢視」->逐級點開左上方資料夾->右鍵」dialog「目錄->新增資源->dialog->新建

選中對話方塊->右鍵->新增類->命名乙個名字

給所有按鈕新增事件監聽事件函式,函式一定是在新新增的類的cpp檔案中,如果跑到了其他cpp檔案中,建議刪除重新建立一次。

在numberpad.**件中,建立乙個變數:

public

: cstring n_str;

//用於傳值給主視窗,可以用與編輯框繫結的變數替換掉。

普通按鈕監聽事件函式中新增:

display

('0');

//裡面的數字是按鈕所代表的數字,這代表按下了「0」鍵

兩個特殊的按鈕監聽事件函式新增下面的**:

void numberpad::

onbnclickedok()

//numberpad是我設定的視窗類名

cdialogex::

onok()

;//確定按鍵特有的,用於判斷是否是按下確定才導致視窗消失

}void numberpad::

onbnclickedcancel()

在#include "numberpad.h"中的public新增:

cstring n_str;

//主要就是靠這個引數進行傳值

afx_msg void

display

(char str)

;//新增顯示函式,而且函式可以用numberpad命名空間的值

編寫顯示函式:

void numberpad::

display

(char str)

else

if(n_str !=

'0')

//編輯框內的內容不是0,則不斷增加字串的內容

break

;case

'-':

if(n_str[0]

!='-'

)//如果沒有負號,則增加乙個負號

break

;case

'(n_str !="")

//如果string有字元,則刪除掉最後乙個字元

break

;default:if

(n_str.

getlength()

<10)

break;}

}setdlgitemtext

(idc_edit_n, n_str)

;//顯示到編輯框中

//idc_edit_n是編輯框的id

在屬性中修改靜態文字框的id和通知

不修改這兩個,要麼建立不了監聽事件,要麼建立了也無法更改靜態文字的內容。

回到主視窗的cpp檔案中

在主視窗的cpp檔案中匯入上面視窗的**件。

給靜態文字建立乙個監聽事件,在監聽事件函式中新增:

void cdeliverydlg::

ons***blclickstaticd()

}

MFC建立模態對話方塊和非模態對話方塊

以下主對話方塊類為 maindlg 一 建立模態對話方塊 1.在資源檢視裡插入dialog,對新建的對話方塊進行更改屬性新增需要的控制項等操作。2.在新建的對話方塊中右鍵新增類,新增新的對話方塊類cmodeldlg。3.在maindlg.h中包含modeldlg的標頭檔案 include cmode...

模態對話方塊傳值限制

12月5日 今天要給模組訂單新增列印功能。功能模組的視窗在iframe框架裡的子視窗裡。必須把它弄到主視窗去列印。用了window.open 但是發現這樣就脫離的iframe框架。一些位址就顯示給客戶看了。給window.open 裡放引數消除位址列也不起作用。這不是我們想要的。我們的位址列是不變化...

MFC模態與非模態對話方塊

1.1模態對話方塊 model dialog box 當模態對話方塊顯示時,程式會暫停執行,直到關閉這個模態對話方塊之後,才能執行程式中的其他任務。1.2非模態對話方塊 modeless dialog box 當非模態對話方塊顯示時,執行轉而執行程式中的其他任務,而不用關閉這個對話方塊。2.1模態對...