C语言基础MessageBox(......)用法详解
MessageBox()
功能顯示一個消息對話框。
語法MessageBox(text,title{,icon{,button{,default}}})
參數(shù)title:string類型,指定消息對話框的標(biāo)題text:指定消息對話框中顯示的消息,該參數(shù)可以是數(shù)值數(shù)據(jù)類型、字符串或boolean值icon:Icon枚舉類型,可選項,指定要在該對話框左側(cè)顯示的圖標(biāo)button:Button枚舉類型,可選項,指定顯示在該對話框底部的按鈕default:數(shù)值型,可選項,指定作為缺省按鈕的按鈕編號,按鈕編號自左向右依次計數(shù),缺省值為1,如果該參數(shù)指定的編號超過了顯示的按鈕個數(shù),那么MessageBox()函數(shù)將使用缺省值返回值Integer。函數(shù)執(zhí)行成功時返回用戶選擇的按鈕編號(例如1、2、3等),發(fā)生錯誤時返回-1。如果任何參數(shù)的值為NULL,MessageBox()函數(shù)返回NULL。
用法:當(dāng)你的應(yīng)用程序需要顯示一段簡短信息(比如顯示出錯、警告等信息)時,沒有必要自己從頭創(chuàng)建窗口、安排控件,使用MessageBox()函數(shù)既簡單又方便。用戶只有響應(yīng)該窗口后,程序才能繼續(xù)運行下去。MessageBox()函數(shù)的icon參數(shù)指定顯示在窗口中的圖標(biāo),它是枚舉類型,可能取值為: 取值 圖標(biāo)Information! StopSign! Exclamation! Question! None! 無圖標(biāo)其中Information!是Icon參數(shù)的缺省值。Button參數(shù)指定在窗口中顯示哪些按鈕,有效取值為:取值中文Windows 95下顯示OK!“確定”按鈕OKCancel!“確定”、“取消”按鈕YesNo!“是”、“否”按鈕 YesNoCancel!“是”、“否”、“取消”按鈕RetryCancel!“重試”、“取消”按鈕AbortRetryIgnore!“終止”、“重試”、“忽略”按鈕
函數(shù)功能:該函數(shù)創(chuàng)建、顯示、和操作一個消息框。消息框含有應(yīng)用程序定義的消息和標(biāo)題,加上預(yù)定義圖標(biāo)與Push(下按)按鈕的任何組合。
SDK中的簡單說明:
//MessageBox?(句柄, 顯示內(nèi)容,標(biāo)題,MB_OK)?;
句柄可以為NULL,表示當(dāng)前窗體的句柄.
最后一個參數(shù)是顯示在提示框中的按鈕類型:
MB_ABORTRETRYIGNORE
MB_OKCANCEL
MB_RETRYCANCEL
MB_YESNO
MB_YESNOCANCEL
MB_OK
可選任一標(biāo)志。
以下是詳細(xì)介紹:
MessageBox?(句柄, 顯示內(nèi)容,標(biāo)題,MB_OK) ;
句柄可以為NULL,表示當(dāng)前窗體的句柄.
最后一個參數(shù)是顯示在提示框中的按鈕類型:
MB_ABORTRETRYIGNORE
MB_OKCANCEL
MB_RETRYCANCEL
MB_YESNO
MB_YESNOCANCEL
MB_OK
可選任一標(biāo)志。
函數(shù)原型:int?MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT UType);
參數(shù):
hWnd:標(biāo)識將被創(chuàng)建的消息框的擁有窗口。如果此參數(shù)為NULL,則消息框沒有擁有窗口。
lpText:指向一個以NULL結(jié)尾的、含有將被顯示的消息的字符串的指針。
lpCaption:指向一個以NULL結(jié)尾的、用于對話框標(biāo)題的字符串的指針。
uType:指定一個決定對話框的內(nèi)容和行為的位標(biāo)志集。此參數(shù)可以為下列標(biāo)志組中標(biāo)志的組合。
指定下列標(biāo)志中的一個來顯示消息框中的按鈕,標(biāo)志的含義如下。
MB_ABORTRETRYIGNORE:消息框含有三個按鈕:Abort,Retry和Ignore。
MB_OK:消息框含有一個按鈕:OK。這是缺省值。
MB_OKCANCEL:消息框含有兩個按鈕:OK和Cancel。
MB_RETRYCANCEL:消息框含有兩個按鈕:Retry和Cancel。
MB_YESNO:消息框含有兩個按鈕:Yes和No。
MB_YESNOCANCEL:消息框含有三個按鈕:Yes,No和Cancel。
指定下列標(biāo)志中的一個來顯示消息框中的圖標(biāo):標(biāo)志的含義如下。
MB_ICONEXCLAMATION:
MB_ICONWARNING:一個驚嘆號出現(xiàn)在消息框。
MB_ICONINFORMATION:
MB_ICONASTERISK:一個圓圈中小寫字母i組成的圖標(biāo)出現(xiàn)在消息框。
MB_ICONQUESTION:一個問題標(biāo)記圖標(biāo)出現(xiàn)在消息框。
MB_ICONSTOP:
MB_ICONERROR:
MB_ICONHAND:一個停止消息圖標(biāo)出現(xiàn)在消息框。
指定下列標(biāo)志中的一個來顯不缺省的按鈕:標(biāo)志的含義如下。
MB_DEFBUTTON1:第一個按鈕為缺省按鈕。如果MB_DEFBUTTON2,MB_DEFBUTTON3,MB_DEFBUTTON4沒有被指定,則MB_DEFBUTTON1為缺省值。
MB_DEFSUTTON2;第二個按鈕為缺省按鈕。
MB_DEFBUTTON3:第三個按鈕為缺省按鈕。
MB_DEFBUTTON4:第四個按鈕為缺省按鈕。
指定下列標(biāo)志中的一個來顯示對話框的形態(tài):標(biāo)志的含義如卜。
MB_APPLMODAL:在hwnd參數(shù)標(biāo)識的窗口中繼續(xù)工作以前,用戶一定響應(yīng)消息框。但是,用戶可以移動到其他線程的窗口且在這些窗口中工作。根據(jù)應(yīng)用程序中窗口的層次機構(gòu),用戶則以移動到線程內(nèi)的其他窗口。所有母消息框的子窗口自動地失效,但是彈出窗口不是這樣。如果既沒有指定MB_SYSTEMMODAL也沒有指定MB_TASKMOOAL,則MB_APPLMODAL為缺省的。
MB_SYSTEMMODAL:除了消息框有WB_EX_TOPMOST類型,MB_APPLMODAL和WS_EX_TOPMOST一樣。用系統(tǒng)模態(tài)消息框來改變各種各樣的用戶,主要的損壞錯誤需要立即注意(例如,內(nèi)存溢出)。如果不是那些與hwnd聯(lián)系的窗口,此標(biāo)志對用戶對窗口的相互聯(lián)系沒有影響。
MB_TASKMODAL:如果參數(shù)hwnd為NULL,除了所有屬于當(dāng)前線程高層次的窗口足失效的,MB_TASKMODALL和MB_ApPLMODAL一樣。當(dāng)調(diào)用應(yīng)用程序或庫沒有一個可以得到的窗口句柄時,使用此標(biāo)志。但仍需要阻止到調(diào)用應(yīng)用程序甲其他窗口的輸入而不是擱置其他線程。
另外,可以指定下列標(biāo)志。
MB_DEFAULT_DESKTOP_ONLy:接收輸入的當(dāng)前桌面一定是一個缺省桌面。否則,函數(shù)調(diào)用失敗。缺省桌面是一個在用戶已經(jīng)紀(jì)錄且以后應(yīng)用程序在此上面運行的桌面。
MB_HELP:把一個Help按鈕增加到消息框。選擇Help按鈕或按F1產(chǎn)生一個Help事件。
MB_RIGHT:文本為右調(diào)整。
MB_RTLREADING:用在Hebrew和Arabic系統(tǒng)中從右到左的順序顯示消息和大寫文本。
MB_SETFOREGROUND:消息框變?yōu)榍熬按翱凇T趦?nèi)部系統(tǒng)為消息個調(diào)用SetForegrundWindow函數(shù)。
MB_TOPMOSI:消息框用WS_EX_TOPMOST窗口類型來創(chuàng)建MB_SERVICE_NOTIFICATION。
Windows NT:調(diào)用程序是一個通知事件的用戶的服務(wù)程序。函數(shù)在當(dāng)前活動桌面上顯示一個消息框,即使沒有用戶登記到計算機。
如果設(shè)置了此參數(shù),則hwnd參數(shù)一定為NULL。所以消息框可以出現(xiàn)在一個桌面上而不是桌面響應(yīng)參數(shù)hwnd。
對于Windows NT 4.0,MB_SERVICE_NOTIFICATION的值已經(jīng)改變。對于舊的和新的值,請參見WINUSER。
Windows NT 4.O通過把舊值映射到MessageBox和MessageBoxEx執(zhí)行中的新值,為先存在的服務(wù)程序提供逆兼容。此映射只為有了版本數(shù)目的可執(zhí)行程序而做。
為了建立一個用MB_SERVICE_NOTIFICATION的服務(wù)器,且可以在Windows NT 3.X和Window NT 4.0上執(zhí)行,可有兩種選擇。在連接時間,指定一個版本數(shù)目小于4.0的版本,或在連接時間,指定一個4.0版本。在運行時間,用函數(shù)GetVersionEx來檢測系統(tǒng)版本,然后在Windows NT 3.X上用MB_SERVICE_NOTIFICATION_NT 3.x來運行和在Windows NT 4.0上用MB_SERVICE_NOTIFICAION來運行。MB_SERVCE_NOTIFICATION_NT3.x(WindowNT)此值響應(yīng)于為WindowNT3.51的MB_SERVICE_NOTIFICAION
定義的值。
返回值:如果沒有足夠的內(nèi)存來創(chuàng)建消息框,則返回值為零。如果函數(shù)調(diào)用成功,則返回值為下列對話框返回的菜單項目值中的一個:
IDABORT:Abort 按鈕被選中。IDCANCEL:Cancel按鈕被選中。IDIGNORE:Ignore按鈕被選中。
IDNO:NO按鈕被選中。IDOK:OK按鈕被選中。IDRETRY:RETRY按鈕被選中。
IDYES:YES按鈕被選中。
如果一個消息框有一個Cancel按鈕,且如果Esc鍵被按下或Cancel鍵被選擇,則函數(shù)返回IDCANCEL值。如果消息框沒有Cancel按鈕,則按Esc鍵沒有作用。
備注:當(dāng)創(chuàng)建一個系統(tǒng)模態(tài)消息框來表示系統(tǒng)在內(nèi)存的低端中時,由lpTeXt和lpCaption參數(shù)指向的字符串不應(yīng)該從一個資源文件中取出,因為試圖裝載此資源可能導(dǎo)致失敗。
當(dāng)一個應(yīng)用程序調(diào)用MessageBox,且為uType參數(shù)指定MB_ICONHAND和MB_SYSTEMMODAL標(biāo)志時,系統(tǒng)不管可用內(nèi)存為多少,直接顯示結(jié)果消息框。當(dāng)這些標(biāo)志被指定,系統(tǒng)把消息框文本的長度局限于三行。系統(tǒng)不能自動截斷要填到消息框的行,但是消息字符串一定含有回車換行,以在合適的位置換行。
如果在對話框出現(xiàn)的的同時創(chuàng)建了消息框,則可使用對話框的句柄作為hwnd參數(shù),hwnd參數(shù)不應(yīng)該標(biāo)識一個子窗口,例如對話框中的一個控制。
Windows 95:系統(tǒng)可以支持最大達16364個窗口句柄。
Windows CE:Windows CE 不支持uType參數(shù)的下列值:
MB_STSTEMMODAL;MB_TASKMODAL;MB_HELP;MB_RTLREADING;MB_DEFAULT_DESKTOP_ONLY;
MB_SERVICE_NOTIFICATION;MB_USERICON。
不支持下列返回值:IDCLOSE;IDHELP。
速查:Windows:3.1及以上版本:Windows:95及以上版本;Windows:1.0及以上版本;頭文件:Winuser.h;庫文件:USer32.lib;URicode:在Windows NT上實現(xiàn)為Unicode和ANSI兩種版本。
我的一段代碼:
L1:?int ret=MessageBox(NULL,TEXT("你是好人嗎?"),TEXT("CHOOSE"),MB_YESNO|MB_ICONQUESTION);
?if(ret==IDYES)
?{int ret2=MessageBox(NULL,TEXT("你看你就不像一個好人!"),TEXT("要說實話喲!"),MB_OK|MB_ICONWARNING);
?if(ret2==IDOK)
??MessageBox(NULL,TEXT("開始格式化C盤!哈哈"),TEXT("騙人了吧!"),MB_OK);
?}
?else
?{
??int ret3=MessageBox(NULL,TEXT("嘗試把你變成好人失敗,是否重試呢?"),TEXT("要做好人嗎?"),MB_OK|MB_RETRYCANCEL);
??if(ret3==IDRETRY) goto L1;
???else MessageBox(NULL,TEXT("壞蛋可以去死啦!"),TEXT("哎真讓人替你悲哀呀"),MB_OK);
?}
截圖效果:
總結(jié)
以上是生活随笔為你收集整理的C语言基础MessageBox(......)用法详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker Installation
- 下一篇: 1分钟看懂:java 项目中 VO 、D