1. 程式人生 > >彈出視窗函式MessageBox用法、分析及相應原始碼(轉帖)

彈出視窗函式MessageBox用法、分析及相應原始碼(轉帖)

很多次使用彈出視窗作為提示的視窗之用,但是還真的沒有認真的去研究一下,今天寫程式的時候,希望不僅提示使用者話,還加上一個警告的小視窗,順便也研究一下如何去使用,好啦,現在開始吧。tEjSSE6 工作室網路技術空間
VC函式原型:tEjSSE6 工作室網路技術空間
int MessageBox(          tEjSSE6 工作室網路技術空間
    HWND hWnd,tEjSSE6 工作室網路技術空間
    LPCTSTR lpText,tEjSSE6 工作室網路技術空間
    LPCTSTR lpCaption,tEjSSE6 工作室網路技術空間
    UINT uTypetEjSSE6 工作室網路技術空間


);tEjSSE6 工作室網路技術空間

VC函式引數說明:tEjSSE6 工作室網路技術空間
    hWnd:標識將被建立的訊息框的擁有視窗。如果此引數為NULL,則訊息框沒有擁有視窗。tEjSSE6 工作室網路技術空間
    lpText:指向一個以NULL結尾的、含有將被顯示的訊息的字串的指標。tEjSSE6 工作室網路技術空間
    lpCaption:指向一個以NULL結尾的、用於對話方塊標題的字串的指標。tEjSSE6 工作室網路技術空間
    uType:指定一個決定對話方塊的內容和行為的位標誌集。此引數可以為下列標誌組中標誌的組合。tEjSSE6 工作室網路技術空間
        指定下列標誌中的一個來顯示訊息框中的按鈕,標誌的含義如下。tEjSSE6 工作室網路技術空間


            MB_ABORTRETRYIGNORE:訊息框含有三個按鈕:Abort,Retry和Ignore。tEjSSE6 工作室網路技術空間
     MB_CANCELTRYCONTINUE:Microsoft Windows 2000/XP平臺下所使用的提示,有三個按鈕Cancel, Try Again, Continue.這個按鈕 主要是用來代替MB_ABORTRETRYIGNORE。tEjSSE6 工作室網路技術空間
     MB_HELP:把一個Help按鈕增加到訊息框。選擇Help按鈕或按F1產生一個Help事件。tEjSSE6 工作室網路技術空間
     MB_OK:訊息框含有一個按鈕:OK。這是預設值。tEjSSE6 工作室網路技術空間

          MB_OKCANCEL:訊息框含有兩個按鈕:OK和Cancel。tEjSSE6 工作室網路技術空間
     MB_RETRYCANCEL:訊息框含有兩個按鈕:Retry和Cancel。tEjSSE6 工作室網路技術空間
     MB_YESNO:訊息框含有兩個按鈕:Yes和No。tEjSSE6 工作室網路技術空間
     MB_YESNOCANCEL:訊息框含有三個按鈕:Yes,No和Cancel。tEjSSE6 工作室網路技術空間
        指定下列標誌中的一個來顯示訊息框中的圖示:標誌的含義如下。tEjSSE6 工作室網路技術空間
     MB_ICONEXCLAMATION:一個驚歎號出現在訊息框。tEjSSE6 工作室網路技術空間
     MB_ICONWARNING:一個驚歎號出現在訊息框。tEjSSE6 工作室網路技術空間
     MB_ICONINFORMATION:一個圓圈中小寫字母i組成的圖標出現在訊息框。tEjSSE6 工作室網路技術空間
     MB_ICONASTERISK:一個圓圈中小寫字母i組成的圖標出現在訊息框。tEjSSE6 工作室網路技術空間
     MB_ICONQUESTION:一個問題標記圖標出現在訊息框。tEjSSE6 工作室網路技術空間
     MB_ICONSTOP:一個停止訊息圖標出現在訊息框。tEjSSE6 工作室網路技術空間
     MB_ICONERROR:一個停止訊息圖標出現在訊息框。tEjSSE6 工作室網路技術空間
            MB_ICONHAND:一個停止訊息圖標出現在訊息框。tEjSSE6 工作室網路技術空間
        指定下列標誌中的一個來顯不預設的按鈕:標誌的含義如下。tEjSSE6 工作室網路技術空間
     MB_DEFBUTTON1:第一個按鈕為預設按鈕。如果MB_DEFBUTTON2,MB_DEFBUTTON3,MB_DEFBUTTON4沒有被指定,則MB_DEFBUTTON1為預設值。tEjSSE6 工作室網路技術空間
          MB_DEFSUTTON2;第二個按鈕為預設按鈕。tEjSSE6 工作室網路技術空間
          MB_DEFBUTTON3:第三個按鈕為預設按鈕。tEjSSE6 工作室網路技術空間
          MB_DEFBUTTON4:第四個按鈕為預設按鈕。tEjSSE6 工作室網路技術空間
 指定下列標誌中的一個來顯示對話方塊的形態:標誌的含義如卜。tEjSSE6 工作室網路技術空間
     MB_APPLMODAL:在hwnd引數標識的視窗中繼續工作以前,使用者一定響應訊息框。但是,使用者可以移動到其他執行緒的視窗且在這些視窗中工作。根據應用程式中視窗的層次機構,使用者則以移動到執行緒內的其他視窗。所有母訊息框的子視窗自動地失效,但是彈出視窗不是這樣。如果既沒有指定MB_SYSTEMMODAL也沒有指定MB_TASKMOOAL,則MB_APPLMODAL為預設的。tEjSSE6 工作室網路技術空間
       MB_SYSTEMMODAL:除了訊息框有WB_EX_TOPMOST型別,MB_APPLMODAL和WS_EX_TOPMOST一樣。用系統模態訊息框來改變各種各樣的使用者,主要的損壞錯誤需要立即注意(例如,記憶體溢位)。如果不是那些與hwnd聯絡的視窗,此標誌對使用者對視窗的相互聯絡沒有影響。tEjSSE6 工作室網路技術空間
          MB_TASKMODAL:如果引數hwnd為NULL,除了所有屬於當前執行緒高層次的視窗足失效的,MB_TASKMODALL和MB_ApPLMODAL一樣。當呼叫應用程式或庫沒有一個可以得到的視窗控制代碼時,使用此標誌。但仍需要阻止到呼叫應用程式甲其他視窗的輸入而不是擱置其他執行緒。tEjSSE6 工作室網路技術空間
 另外,可以指定下列標誌。tEjSSE6 工作室網路技術空間
       MB_DEFAULT_DESKTOP_ONLy:接收輸入的當前桌面一定是一個預設桌面。否則,函式呼叫失敗。預設桌面是一個在使用者已經紀錄且以後應用程式在此上面執行的桌面。tEjSSE6 工作室網路技術空間
          MB_HELP:把一個Help按鈕增加到訊息框。選擇Help按鈕或按F1產生一個Help事件。tEjSSE6 工作室網路技術空間
          MB_RIGHT:文字為右調整。tEjSSE6 工作室網路技術空間
          MB_RTLREADING:用在Hebrew和Arabic系統中從右到左的順序顯示訊息和大寫文字。tEjSSE6 工作室網路技術空間
          MB_SETFOREGROUND:訊息框變為前景視窗。在內部系統為訊息個呼叫SetForegrundWindow函式。tEjSSE6 工作室網路技術空間
          MB_TOPMOSI:訊息框用WS_EX_TOPMOST視窗型別來建立MB_SERVICE_NOTIFICATION。tEjSSE6 工作室網路技術空間
          Windows NT:呼叫程式是一個通知事件的使用者的服務程式。函式在當前活動桌面上顯示一個訊息框,即使沒有使用者登記到計算機。tEjSSE6 工作室網路技術空間

VC函式返回值:tEjSSE6 工作室網路技術空間
    如果程式返回的是失敗的話,會返回0,否則會返回相應的數值。tEjSSE6 工作室網路技術空間
    IDABORT 終止按鈕被選擇tEjSSE6 工作室網路技術空間
    IDCANCEL 取消的按鈕被選擇tEjSSE6 工作室網路技術空間
    IDCONTINUE 繼續的按鈕被選擇 tEjSSE6 工作室網路技術空間
    IDIGNORE 忽略的按鈕被選擇tEjSSE6 工作室網路技術空間
    IDNO 否的按鈕被選擇tEjSSE6 工作室網路技術空間
    IDOK 確定的按鈕被選擇tEjSSE6 工作室網路技術空間
    IDRETRY 重試的按鈕被選擇tEjSSE6 工作室網路技術空間
    IDTRYAGAIN 重試一次的按鈕被選擇tEjSSE6 工作室網路技術空間
    IDYES 是的按鈕被選擇tEjSSE6 工作室網路技術空間

tEjSSE6 工作室網路技術空間
VC函式原始碼:tEjSSE6 工作室網路技術空間
if (fError) tEjSSE6 工作室網路技術空間
{ tEjSSE6 工作室網路技術空間
    if (MessageBox(hwndDlg, SZNOTFOUND, SZDELETEITEM, tEjSSE6 工作室網路技術空間
        MB_OKCANCEL)==IDOK) tEjSSE6 工作室網路技術空間
    {tEjSSE6 工作室網路技術空間

         // Prompt for a new item name and repeat the command. tEjSSE6 工作室網路技術空間

    }tEjSSE6 工作室網路技術空間
    else tEjSSE6 工作室網路技術空間
    {tEjSSE6 工作室網路技術空間

         // Cancel the command. tEjSSE6 工作室網路技術空間

    }tEjSSE6 工作室網路技術空間
} tEjSSE6 工作室網路技術空間
tEjSSE6 工作室網路技術空間

本文源自:http://js.sse6.cn/ 轉載請註明。tEjSSE6 工作室網路技術空間