VS2010 MFC(對話方塊 訊息對話方塊)

2022-05-12 01:15:51 字數 2877 閱讀 6596

**:

前面幾節講了屬性頁對話方塊,我們可以根據所講內容方便的建立自己的屬性頁對話方塊。本節講解windows系統中最常用最簡單的一類對話方塊--訊息對話方塊。

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

一.cwnd::messagebox()函式和afxmessagebox()函式的用法

下面分別講解兩個函式的用法。

1.cwnd::messagebox()函式

cwnd::messagebox()的函式原型如下:

int messagebox(

lpctstr lpsztext,

lpctstr lpszcaption = null,

uint ntype = mb_ok 

);引數說明:

lpsztext:需要顯示的訊息字串。

lpszcaption:訊息對話方塊的標題字串。預設值為null。取值為null時使用預設標題。

ntype:訊息對話方塊的風格和屬性。預設為mb_ok風格,即只有「確定」按鈕。

ntype的取值可以是下面兩個表中任取乙個值,也可以是各取乙個值的任意組合。即可以指定乙個對話方塊型別,也可以指定乙個對話方塊圖示,還可以兩者都設定。

ntype 取值

引數說明

mb_abortretry

有「終止」、「重試」和「忽略」按鈕

mb_ok

有「確定」按鈕

mb_okcancel

有「確定」和「取消」按鈕

mb_retrycancel

有「重試」和「取消」按鈕

mb_yesno

有「是」和「否」按鈕

mb_yesnocancel

有「是」、「否」和「取消」按鈕

對話方塊型別表

ntype 取值

顯示圖示

mb_iconexclamtion

mb_iconwarning

mb_iconasterisk

mb_iconinformation

mb_iconquestion

mb_iconhand

mb_iconstop

mb_iconerror

對話方塊圖示表

ps:如果想要設定ntype的值為型別和圖示的組合,可以像這樣取值:mb_okcancel | mb_iconquestion按位取或就可以了。

2.afxmessagebox()函式

afxmessagebox()的函式原型為:

int afxmessagebox(

lpctstr lpsztext,

uint ntype = mb_ok,

uint nidhelp = 0 

);引數說明:

lpsztext:同cwnd::messagebox()函式

ntype:cwnd::messagebox()函式

nidhelp:此訊息的幫助的上下文id。預設值為0,取0時表示要使用應用程式的預設幫助上下文。

二.cwnd::messagebox()和afxmessagebox()的返回值

我們在呼叫了上面兩個函式後,都可以彈出模態訊息對話方塊。訊息對話方塊關閉後,我們也都可以得到它們的返回值。兩者的返回值就是使用者在訊息對話方塊上單擊的按鈕的id,可以是以下值:

idabort:單擊「終止」按鈕。

idcancel:單擊「取消」按鈕。

idignore:單擊「忽略」按鈕。

idno:單擊「否」按鈕。

idok:單擊「確定」按鈕。

idretry:單擊「重試」按鈕。

idyes:單擊「是」按鈕。

三.應用舉例

我們還是拿前面加法計算器的程式做例子。

大家是否記得,在模態對話方塊及其彈出過程中我們修改了cadditiondlg::onbnclickedaddbutton()函式,在點了「計算」按鈕以後先彈出了乙個模態對話方塊,詢問使用者是否確定要進行加法計算,並通過模態對話方塊domodal函式的返回值判斷使用者選擇了「確定」還是「取消」。這些功能很明顯訊息對話方塊完全能夠實現,下面就使用訊息對話方塊來替代原來的模態對話方塊。

在非模態對話方塊的建立及顯示中,注釋了模態對話方塊的相關**,加入了非模態對話方塊的建立和顯示**,我們在加入訊息對話方塊之前將非模態對話方塊的**也注釋或刪除掉,確保此函式中不再生成原來的模態對話方塊或非模態對話方塊。

修改後的cadditiondlg::onbnclickedaddbutton()函式如下:

c++**

void

cadditiondlg::onbnclickedaddbutton()

編譯執行,在執行結果對話方塊上點「計算」按鈕彈出以下訊息對話方塊:

大家也可以將messagebox函式換為afxmessagebox()函式,同時引數進行相應修改,執行下看看效果。

訊息對話方塊就講到這裡了。在以後的軟體開發中用到它的頻率很高,希望大家慢慢熟悉並掌握它。

VS2010 MFC 使用模態對話方塊和非模態對話方塊

建立對話方塊之前需要準備好對話方塊資源,並為該對話方塊生成相應的類。比如新建對話方塊資源idd dialog1以及對話方塊類ctips。使用模態對話方塊 在當前呼叫該對話方塊的.cpp中 include tips.h ctips tipsdlg int prr nresponse ipsdlg.do...

VS2010 MFC 模態對話方塊及其彈出過程

加法計算器對話方塊程式大家照著做一遍後,相信對基於對話方塊的程式有些了解了,有個好的開始對於以後的學習大有裨益。趁熱打鐵,這一節講講什麼是模態對話方塊和非模態對話方塊,以及模態對話方塊怎樣彈出。一.模態對話方塊和非模態對話方塊 windows對話方塊分為兩類 模態對話方塊和非模態對話方塊。模態對話方...

vs2010mfc單文件中新增對話方塊中的控制項

今天才發現,原來mfc中有個叫formview的view是乙個和dialog一樣的view,他可以用來新增dialog中的控制項。所以只要將單文件拆分成兩個view,乙個是本身的view,另乙個是formview,這樣就可以在formview中新增對話方塊中的控制項如button,靜態文字框,編輯框...