程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 顯示模式對話框實例

顯示模式對話框實例

編輯:C++入門知識

模式對話框被創建後會立即顯示出來,即使創建時沒有指定WS_VISIBLE。
使用API函數DialogBox和DialogBoxParam。其中DialogBoxParam最常用。
調用EndDialog結束一個模式對話框.
對話框建立後收到的第一條消息是WM_INITDIALOG,所以對話框的初始化工作應該放在WM_INITDIALOG消息的響應函數中。
MFC中調用CDialog::DoMadal()可以創建並顯示一個模式對話框。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
新建一個簡單Win32項目ModalDlg
向工程添加一個對話框資源ID為IDD_MAIN
將系統生成的ModalDlg.cpp文件改寫如下:
[cpp]
#include "tchar.h" 
#include "resource.h" 
 
///對話框過程,處理各種消息 
BOOL CALLBACK DlgProc(HWND hwndDlg ,UINT uMsg ,WPARAM wParam ,LPARAM lParam) 

    switch(uMsg) 
    { 
    case WM_CREATE: 
        OutputDebugString(_T("收到了WM_Create消息\n")); 
        break; 
    case WM_INITDIALOG: 
            OutputDebugString(_T("收到了WM_InitDialog消息\n")); 
            break; 
    case WM_COMMAND: 
        switch(LOWORD(wParam)) 
        { 
        case IDOK: 
            break; 
        case IDCANCEL: 
            EndDialog(hwndDlg , 1); 
            return true; 
        } 
        break; 
        case WM_CLOSE: 
            EndDialog(hwndDlg , 0); 
            return true; 
        default: 
            break; 
 
    } 
    return false; 

int APIENTRY WinMain(HINSTANCE hInstance, 
                     HINSTANCE hPrevInstance, 
                     LPSTR     lpCmdLine, 
                     int       nCmdShow) 

    // TODO: Place code here. 
    ///顯示模式對話框,***並等待****,直到對話框結束才返回 
    int nRet = DialogBoxParam(hInstance,MAKEINTRESOURCE(IDD_MAIN) ,NULL ,DlgProc ,0); 
    ///此函數的返回值是由EndDialog函數指定的,即:**nRet***的值由EndDialog指定 
    switch(nRet) 
    { 
    case 0 : 
        OutputDebugString(_T("標題欄的關閉按鈕關閉了對話框\n")); 
        break; 
    case 1: 
        OutputDebugString(_T("取消按鈕關閉了對話框\n")); 
        break; 
    } 
    return 0; 

 

說明:
1、模式對話框的WinMain函數簡單了許多,這是因為系統已經在後台做了許多工作,甚至在WinMain中連消息循環代碼都可以省掉。
2、模式對話框的消息消息處理過程返回值為BOOL
3、實際對話框過程並沒有收到WM_CREATE消息,因為WM_CREATE消息發出時,對話框框架還沒有建立,這條消息被系統內部處理了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved