Windows API一日一练 17 DialogBox和DialogBoxParam函数
生活随笔
收集整理的這篇文章主要介紹了
Windows API一日一练 17 DialogBox和DialogBoxParam函数
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
分享一下我老師大神的人工智能教程!零基礎(chǔ),通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉(zhuǎn)載本篇文章。分享知識(shí),造福人民,實(shí)現(xiàn)我們中華民族偉大復(fù)興!
對(duì)話框是比較常用的窗口,比如當(dāng)你想讓用戶輸入一些參數(shù)時(shí)就可以使用對(duì)話框。或者提示一些警告的信息,都是可以使用對(duì)話框的。比如當(dāng)你拷貝文件時(shí),Windows就會(huì)提示一個(gè)拷貝文件的進(jìn)度對(duì)話框。對(duì)話框的使用范圍比較廣,并且它在設(shè)計(jì)時(shí)就可以看到運(yùn)行的結(jié)果模樣,這樣方便設(shè)計(jì)。但對(duì)話框又分為兩類,一種對(duì)話框運(yùn)行后,一定要用戶關(guān)閉那個(gè)對(duì)話框后才能返回到父窗口;一種對(duì)話框是不需要關(guān)閉后就可以直接返回父窗口。因此,軟件開(kāi)發(fā)人員就要考慮這個(gè)對(duì)話框的結(jié)果是否會(huì)影響后面的操作,如果這個(gè)對(duì)話框的結(jié)果跟后面的操作沒(méi)有因果關(guān)系的,可以設(shè)置為第二種對(duì)話框。像拷貝文件的對(duì)話框就是第二種的對(duì)話框,稱作無(wú)模式的對(duì)話框。如果設(shè)置為第一類,非要等那里拷貝文件才可以去操作其它東西,那么Windows就不方便使用了,這樣會(huì)浪費(fèi)大量的時(shí)間。讓人等待,就是一個(gè)不好用的軟件,所以軟件開(kāi)發(fā)人員設(shè)計(jì)軟件時(shí),要站在用戶的立場(chǎng)思考問(wèn)題,在保持軟件正確的情況下,不要讓人等待,任何讓人等待超過(guò)20秒以上的軟件,會(huì)讓用戶煩躁不安。如果非要等待的話,也要加入進(jìn)度條對(duì)話框提示,這樣可以有效地緩解用戶煩躁不安的心情。這就跟你去銀行排隊(duì)時(shí),可以坐在那里看著電視,感覺(jué)不到時(shí)間長(zhǎng)的道理一樣的。函數(shù)DialogBox函數(shù)和DialogBoxParam函數(shù)聲明如下:#define DialogBoxA(hInstance, lpTemplate, hWndParent, lpDialogFunc) /DialogBoxParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)#define DialogBoxW(hInstance, lpTemplate, hWndParent, lpDialogFunc) /DialogBoxParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)#ifdef UNICODE#define DialogBox?DialogBoxW#else#define DialogBox?DialogBoxA#endif // !UNICODEWINUSERAPIINT_PTRWINAPIDialogBoxParamA(__in_opt HINSTANCE hInstance,__in LPCSTR lpTemplateName,__in_opt HWND hWndParent,__in_opt DLGPROC lpDialogFunc,__in LPARAM dwInitParam);WINUSERAPIINT_PTRWINAPIDialogBoxParamW(__in_opt HINSTANCE hInstance,__in LPCWSTR lpTemplateName,__in_opt HWND hWndParent,__in_opt DLGPROC lpDialogFunc,__in LPARAM dwInitParam);#ifdef UNICODE#define DialogBoxParam?DialogBoxParamW#else#define DialogBoxParam?DialogBoxParamA#endif // !UNICODEhInstance是當(dāng)前應(yīng)用程序的實(shí)例句柄。lpTemplateName是對(duì)話框的資源模板。hWndParent是父窗口的句柄。lpDialogFunc是對(duì)話框的消息處理函數(shù)。dwInitParam是初始化參數(shù),這里缺省設(shè)置為0。調(diào)用這個(gè)函數(shù)的例子如下:#001?//#002?//?目的:?處理主窗口的消息.#003?//#004?//?蔡軍生2007/07/12?? QQ:9073204#005?//#006?LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)#007?{#008??int wmId, wmEvent;#009??PAINTSTRUCT ps;#010??HDC hdc;#011?#012??switch (message)#013??{#014??case WM_COMMAND:#015???????? wmId??? = LOWORD(wParam);#016???????? wmEvent = HIWORD(wParam);#017???????? // 菜單選項(xiàng)命令響應(yīng):#018???????? switch (wmId)#019???????? {#020???????? case IDM_ABOUT:#021?????????????? DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);#022?????????????? break;#023???????? case IDM_EXIT:#024?????????????? DestroyWindow(hWnd);#025?????????????? break;#026???????? default:#027?????????????? return DefWindowProc(hWnd, message, wParam, lParam);#028???????? }#029???????? break;#030??case WM_PAINT:#031???????? hdc = BeginPaint(hWnd, &ps);#032???????? // #033???????? EndPaint(hWnd, &ps);#034???????? break;#035??case WM_DESTROY:#036???????? PostQuitMessage(0);#037???????? break;#038??default:#039???????? return DefWindowProc(hWnd, message, wParam, lParam);#040??}#041??return 0;#042?}第21行就是調(diào)用函數(shù)DialogBox來(lái)顯示對(duì)話框窗口。對(duì)話框的模板如下:///// Dialog//IDD_ABOUTBOX DIALOGEX 22, 17, 230, 75STYLE DS_SETFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENUCAPTION "關(guān)于"FONT 9, "新宋體", 400, 0, 0x86BEGINICON??????????? IDI_TESTWIN,IDC_MYICON,14,9,21,21LTEXT?????????? "TestWin Version 1.0",IDC_STATIC,49,10,119,8,SS_NOPREFIXLTEXT?????????? "Copyright (C) 2007",IDC_STATIC,49,20,119,8DEFPUSHBUTTON?? "確定",IDOK,185,51,38,16,WS_GROUPENDIDD_ABOUTBOX是對(duì)話框模板的名稱。DIALOGEX是對(duì)話框定義的關(guān)鍵字。22, 17, 230, 75是對(duì)話框的坐標(biāo)和大小。STYLE是設(shè)置對(duì)話框的顯示類型。CAPTION是定義標(biāo)題名稱。這里是"關(guān)于"。FONT是定義對(duì)話的字體。ICON是定義一個(gè)圖標(biāo)顯示。LTEXT是定義顯示靜態(tài)文本。DEFPUSHBUTTON是定義一個(gè)按鈕。????????????給我老師的人工智能教程打call!http://blog.csdn.net/jiangjunshow
總結(jié)
以上是生活随笔為你收集整理的Windows API一日一练 17 DialogBox和DialogBoxParam函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。