模態對話方塊

2021-10-19 13:13:28 字數 3632 閱讀 7976

1、對話方塊標題修改

//對話方塊初始化訊息, (對話方塊還沒有顯示出來,但是對話方塊已經建立好了)

case wm_initdialog:

2、應用程式exe圖示設定:新增圖示資源

//設定視窗圖示

hicon hicon1 = loadicon(g_hinstance, makeintresource(idi_icon1));

hicon hicon2 = loadicon(g_hinstance, makeintresource(idi_icon2));

//設定圖示

sendmessage(hwnd, wm_seticon, icon_big, (lparam)hicon1); //工作列顯示圖示

sendmessage(hwnd, wm_seticon, icon_small, (lparam)hicon2); //exe介面顯示的圖示

3、對話方塊居中

4、響應wm_command訊息

message source

wparam(高字)

wparam(低字)

lparam

menu選單

0選單id

0accelerator加速器

1快捷鍵id

0control控制

control-defined notification code控制項定義的通知**

控制項id

handle to the control window處理到控制視窗

//命令訊息

case wm_command:

break;

}

5、getdlgitemtext函式

uint getdlgitemtext(

hwnd hdlg, // 包含控制項的對話方塊的控制代碼。

int niddlgitem, // 要檢索其標題或文字的控制項的識別符號。

lptstr lpstring, // 接收標題或文字的緩衝區。

int nmaxcount // 要複製到lpstring指向的緩衝區的字串的最大長度(以字元為單位)

);

//獲取使用者名稱和密碼

tchar szusername[200];

tchar szpassword[200];

getdlgitemtext(hwnd, idc_edit1, szusername, 200);

getdlgitemtext(hwnd, idc_edit2, szpassword, 200);

if (wcscmp(szusername, l"admin") == 0 && wcscmp(szpassword, l"123456") == 0)

else

使用dialogbox函式來建立,enddialog來結束對話方塊

dialogbox(hinstance, makeintresource(idd_main_dlg), null, maindialogproc);
enddialog(hwnd, idok);
對話方塊視窗處理函式宣告
//定義全域性變數 因為處理函式中沒有控制代碼 但是載入圖示要有控制代碼

hinstance g_hinstance;

//登入視窗處理函式

bool callback loginproc(hwnd hwnd, uint umsg, wparam wparam, lparam lparam);

//對話方塊視窗處理函式

bool callback maindialogproc(hwnd hwnd, uint umsg, wparam wparam, lparam lparam);

//關於視窗處理函式

bool callback aboutproc(hwnd hwnd, uint umsg, wparam wparam, lparam lparam);

主函式
int winapi winmain(hinstance hinstance, hinstance hpreinstance, lpstr lpcmdline, int ncmdshow)

return 0;

}

對話方塊視窗處理函式

登入視窗處理函式

//登入視窗處理函式

bool callback loginproc(hwnd hwnd, uint umsg, wparam wparam, lparam lparam)

else

}break;

} break;

} //視窗關閉訊息

case wm_close:

enddialog(hwnd, idcancel);

return true;//使用者自己處理

} return false;//使用者不作處理 系統幫處理 即使之前都是true但是到最後還是系統會處理

主對話方塊視窗處理函式

//主對話方塊視窗處理函式

bool callback maindialogproc(hwnd hwnd, uint umsg, wparam wparam, lparam lparam)

//命令訊息

case wm_command:

break;

} //視窗關閉訊息

case wm_close:

if (idno == messagebox(hwnd, l"您確定要關閉嘛?", l"提示", mb_yesno))

return true;

else

//視窗銷毀訊息

case wm_destroy:

//messagebox(null, l"wm_destroy訊息", null, mb_ok);

break;

//檔案拖拽訊息

case wm_dropfiles:

break;

} }//return true; //返回真,表示 所有訊息我們自己處理了,系統不會在給我們處理

return false; //凡回假 表示 所有訊息我們自己沒處理了,系統給我們處理

關於-視窗處理函式

//關於-視窗處理函式

模態對話方塊 非模態對話方塊 標準對話方塊 檔案對話方塊

模態對話方塊 qdialog 非模態對話方塊 qdialog 標準對話方塊 關於對話方塊 問題對話方塊等 qmessagebox 檔案對話方塊 qfiledialog 標準對話方塊還有 qcolordialog 選擇顏色 qfiledialog 選擇檔案或者目錄 qfontdialog 選擇字型 q...

模態對話方塊與非模態對話方塊

1.對話方塊分類 按工作方式不同,可將對話方塊分成兩類 模態對話方塊 modal 在關閉模態對話方塊之前,程式不能進行其他工作 如一般的 開啟檔案 對話方塊 非模態對話方塊 modeless 非模態對話方塊開啟後,程式仍然能夠進行其他工作 如一般的 查詢與替換 對話方塊 2.對話方塊建立 模態對話方...

模態對話方塊和非模態對話方塊

模態對話方塊和非模態對話方塊的區別 在這裡我就說的比較通俗易懂了,就是當你開啟乙個模態對話方塊時,你的焦點不能轉移到程式的其他視窗上,也就是你只能先響應模態對話方塊,才能進行成下面的操作。而非模態對話方塊則相反,你可以不用管它,照常能夠將其他視窗啟用。建立模態對話方塊,主要是應用對話方塊的domod...