基本介紹
- 中文名:模態對話框
- 外文名:MessageBox
- 函式名:MessageBox
- 作用:彈出模式對話框
- 所屬頭檔案:Windows.h和afxwin.h
- 程式語言:C/C++,VB
函式
函式原型
//我們一般理解為:int WINAPI MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType);//其實它是根據Unicode定義的WINUSERAPI int WINAPI MessageBoxA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType);WINUSERAPI int WINAPI MessageBoxW(HWND hWnd,LPCWSTR lpText,LPCWSTR lpCaption,UINT uType);#ifdef UNICODE#define MessageBox MessageBoxW//如果啟用Unicode庫,就用MessageBoxW#else#define MessageBox MessageBoxA//否則,就用MessageBoxA#endif
參數
TEXT(/*sometext*/)
TEXT(/*sometext*/)
uType參數
按鈕參數 | 含義 |
MB_OK | 默認值。有一個確認按鈕在裡面。 |
MB_YESNO | 有是和否在裡面。 |
MB_ABORTRETRYIGNORE | 有Abort(放棄),Retry(重試)和Ignore(跳過) |
MB_YESNOCANCEL | 訊息框含有三個按鈕:Yes,No和Cancel |
MB_RETRYCANCEL | 有Retry(重試)和Cancel(取消) |
MB_OKCANCEL | 訊息框含有兩個按鈕:OK和Cancel |
//按鈕#define MB_OK 0x00000000L#define MB_OKCANCEL 0x00000001L#define MB_ABORTRETRYIGNORE 0x00000002L#define MB_YESNOCANCEL 0x00000003L#define MB_YESNO 0x00000004L#define MB_RETRYCANCEL 0x00000005L//圖示#define MB_ICONHAND 0x00000010L#define MB_ICONQUESTION 0x00000020L#define MB_ICONEXCLAMATION 0x00000030L#define MB_ICONASTERISK 0x00000040L#define MB_USERICON 0x00000080L//圖示聲明#define MB_ICONWARNINGMB_ICONEXCLAMATION#define MB_ICONERRORMB_ICONHAND#define MB_ICONINFORMATIONMB_ICONASTERISK#define MB_ICONSTOPMB_ICONHAND//默認按鈕聲明#define MB_DEFBUTTON1 0x00000000L#define MB_DEFBUTTON2 0x00000100L#define MB_DEFBUTTON3 0x00000200L#if(WINVER>=0x0400)#define MB_DEFBUTTON4 0x00000300L//如果支持第四個MessageBox按鈕的話,定義DEFButton4#endif//對話框模型定義#define MB_APPLMODAL 0x00000000L#define MB_SYSTEMMODAL 0x00001000L#define MB_TASKMODAL 0x00002000L#define MB_HELP 0x00004000L//是否擁有幫助按鈕//特殊聲明#define MB_NOFOCUS 0x00008000L#define MB_SETFOREGROUND 0x00010000L#define MB_DEFAULT_DESKTOP_ONLY 0x00020000L#define MB_TOPMOST 0x00040000L#define MB_RIGHT 0x00080000L#define MB_RTLREADING 0x00100000L
參數 | 含義 |
MB_ICONEXCLAMATION | 一個驚嘆號出現在訊息框 |
MB_ICONWARNING | 一個驚嘆號出現在訊息框 |
MB_ICONINFORMATION | 一個圓圈中小寫字母i組成的圖示出現在訊息框 |
MB_ICONASTERISK | 一個圓圈中小寫字母i組成的圖示出現在訊息框 |
MB_ICONQUESTION | 一個問題標記圖示出現在訊息框 |
MB_ICONSTOP | 一個停止訊息圖示出現在訊息框 |
MB_ICONERROR | 一個停止訊息圖示出現在訊息框 |
MB_ICONHAND | 一個停止訊息圖示出現在訊息框 |
參數 | 含義 |
MB_APPLMODAL | |
MB_SYSTEMMODAL | |
MB_TASKMODAL | 如果參數hwnd為NULL的話,那么除了所有屬於當前執行緒高層次的視窗失效外,MB_TASKMODALL和MB_APPLMODAL一樣。當調用應用程式或庫沒有一個可以得到的視窗句柄時,使用此標誌。但仍需要阻止輸入到調用執行緒的其他視窗,而不是擱置其他執行緒。 |
標誌 | 含義 |
MB_DEFAULT_DESKTOP_ONLY | 接收輸入的當前桌面一定是一個預設桌面。否則,函式調用失敗。預設桌面是一個在用戶已經紀錄且以後應用程式在此上面運行的桌面。 |
MB_HELP | 把一個Help按鈕增加到訊息框。選擇Help按鈕或按F1產生一個Help事件。 |
MB_RIGHT | 文本為右調整 |
MB_RTLREADING | 用在Hebrew和Arabic系統中從右到左的順序顯示訊息和大寫文本。 |
MB_SETFOREGROUND | 訊息框變為前景視窗。在內部系統為訊息個調用SetForegroundWindow函式。 |
MB_TOPMOST | 訊息框用WS_EX_TOPMOST視窗類型來創建MB_SERVICE_NOTIFICATION。 |
返回值
ID | 選擇了…… |
IDOK(1) | OK |
IDCANCEL(2) | CANCEL |
IDABORT(3) | ABORT |
IDRETRY(4) | RETRY |
IDIGNORE(5) | IGNORE |
IDYES(6) | YES |
IDNO(7) | NO |
備註
圖示 | 標誌位值 |
MB_ICONHAND, MB_ICONSTOP, 或者MB_ICONERROR | |
MB_ICONQUESTION | |
MB_ICONEXCLAMATION 或者 MB_ICONWARNING | |
MB_ICONASTERISK 或者 MB_ICONINFORMATION |
實例
#include<windows.h>//切記!當調用<windows.h>時,不要調用MFC!(Afx.h)int main(){ int result = MessageBox( NULL , TEXT("這是對話框") , TEXT("你好") , MB_ICONINFORMATION|MB_YESNO); switch(result)/*注意!使用Unicode套用TEXT包圍字串*/{ case IDYES:MessageBox(NULL,TEXT("您選擇了YES"),TEXT("YES"),MB_OK);break; case IDNO:MessageBox(NULL,TEXT("您選擇了NO"),TEXT("NO"),MB_OK);break;}return 0;}
int result = MessageBox(NULL,TEXT("這是對話框"),TEXT("你好"),MB_ICONINFORMATION|MB_YESNO);
case IDYES:MessageBox(NULL,TEXT("您選擇了YES"),TEXT("YES"),MB_OK);break;
case IDNO:MessageBox(NULL,TEXT("您選擇了NO"),TEXT("NO"),MB_OK);break;
MFC特例
int MessageBox(LPCTSTR lpszText,LPCTSTR lpszCaption=NULL,UINT nType = MB_OK);
參數
返回值
VB方法
MessageBox.Show(Text,Title,MessageBoxButtons,MessageBoxIcon,MessageBoxDefaultButtons)