乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      跟我一起玩Win32開發(fā)(14):用對(duì)話框作為主窗口

       行走在理想邊緣 2014-04-26

      前面我們?cè)诰帉慦in32應(yīng)用程序的思路都是:

      1、設(shè)計(jì)窗口類。2、注冊(cè)窗口類。3、創(chuàng)建窗口?!?/p>

      然而,當(dāng)我們接觸控件以后, 會(huì)發(fā)現(xiàn)一個(gè)問題,我們?cè)诖翱谏戏胖每丶?shí)在不好弄,而資源中的對(duì)話框具有圖形編輯器,操作起來相對(duì)方便。

      于是,就有了一個(gè)想法:把對(duì)話框用作主窗口,那我們?cè)诓季挚丶r(shí)就輕松了。

       

      其實(shí)這想法在網(wǎng)上已有牛人做了,不過,人家是用Win32匯編干的,當(dāng)然,要把它變?yōu)镃++就更簡(jiǎn)單了。

      首先,介紹第一個(gè)法子,直接以桌面作為父窗口來創(chuàng)建對(duì)話框。

      1、創(chuàng)建一個(gè)對(duì)話框資源,界面就發(fā)揮你的設(shè)計(jì)天賦了。

      2、創(chuàng)建一個(gè)圖標(biāo)資源,既作為應(yīng)用程序的圖標(biāo)(VS編譯時(shí)會(huì)選擇第一個(gè)添加到資源中的圖標(biāo)作為EXE的圖標(biāo)),也作為對(duì)話框的圖標(biāo)。

      3、在代碼中創(chuàng)建并顯示對(duì)話框。

      1. #include <Windows.h>   
      2. #include "resource.h"   
      3. // 開啟可視化效果   
      4. #pragma comment(linker,"\"/manifestdependency:type='win32' \   
      5. name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \  
      6. processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")  
      7.   
      8. INT_PTR CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);  
      9.   
      10. HINSTANCE hgInst;  
      11. int WINAPI WinMain(HINSTANCE hThisApp, HINSTANCE hPrevApp, LPSTR lpCmd, int nShow)  
      12. {  
      13.     hgInst = hThisApp;  
      14.     HWND hdlg = CreateDialog(hThisApp, MAKEINTRESOURCE(IDD_MY),GetDesktopWindow(),(DLGPROC)DlgProc);  
      15.     if(!hdlg)  
      16.     {  
      17.         return 0;  
      18.     }  
      19.     ShowWindow(hdlg,SW_SHOW);  
      20.     MSG msg;  
      21.     while(GetMessage(&msg,NULL,0,0))  
      22.     {  
      23.         TranslateMessage(&msg);  
      24.         DispatchMessage(&msg);  
      25.     }  
      26.     return 0;  
      27. }  
      28.   
      29. INT_PTR CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)  
      30. {  
      31.     switch(msg)  
      32.     {  
      33.     case WM_INITDIALOG:  
      34.         // 設(shè)置對(duì)話框的圖標(biāo)   
      35.         SendMessage(hDlg, WM_SETICON, ICON_SMALL, (LPARAM)LoadIcon(hgInst, MAKEINTRESOURCE(IDI_APP)));  
      36.         return 0;  
      37.     case WM_SYSCOMMAND:  
      38.         if(wParam == SC_CLOSE)  
      39.         {  
      40.             PostQuitMessage(0);//退出   
      41.         }  
      42.         return 0;  
      43.     }  
      44.     return (INT_PTR)FALSE;  
      45. }  

       

      這樣,我們可以運(yùn)行一下。

       

      =================================================================

      第二種方法,我們還是遵照設(shè)計(jì)窗口類、注冊(cè)窗口類、創(chuàng)建窗口等步驟,只是把對(duì)話框作為窗口的子級(jí),對(duì)話框采用Form View視圖。

      在插入資源的對(duì)話框中,點(diǎn)擊Dialog左邊的圖標(biāo),展開列表,在列表中選擇IDD_FORMVIEW,然后點(diǎn)“新建”。

       

      然后你看到一個(gè)沒有邊框和標(biāo)題欄的對(duì)話框。

      接下來我們可以放些控件上去。

      最后,在響應(yīng)WM_CREATE消息時(shí),創(chuàng)建并顯示對(duì)話框,父級(jí)是我們的主窗口。

      1. case WM_CREATE:  
      2.     {  
      3.         // 創(chuàng)建對(duì)話框   
      4.         HWND hdlg = CreateDialog(hgAppInst, MAKEINTRESOURCE(IDD_MYFORM), hwnd, (DLGPROC)DlgProc);  
      5.         // 顯示對(duì)話框   
      6.         ShowWindow(hdlg, SW_SHOWNA);  
      7.     }  
      8.     return 0;  


      最后運(yùn)行結(jié)果如下:

       

       

      完整的代碼清單:

      1. #include <Windows.h>   
      2. #include "resource.h"   
      3. #pragma comment(linker,"\"/manifestdependency:type='win32' \   
      4. name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \  
      5. processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")  
      6.   
      7. LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);  
      8. INT_PTR CALLBACK DlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam);  
      9.   
      10. HINSTANCE hgAppInst;  
      11. int WINAPI WinMain(HINSTANCE hThisApp, HINSTANCE hPrevApp, LPSTR lpCmd, int nShow)  
      12. {  
      13.     // 設(shè)計(jì)窗口類   
      14.     WNDCLASS wc = { };  
      15.     wc.hbrBackground = (HBRUSH)COLOR_WINDOW;  
      16.     wc.lpfnWndProc = (WNDPROC)WindowProc;  
      17.     wc.lpszClassName = L"supper_man";  
      18.     wc.hInstance = hThisApp;  
      19.     wc.style = CS_HREDRAW | CS_VREDRAW;  
      20.     RegisterClass(&wc);  
      21.     hgAppInst = hThisApp;  
      22.     // 創(chuàng)建窗口   
      23.     HWND hwnd = CreateWindow(L"supper_man", L"超級(jí)應(yīng)用",   
      24.         WS_OVERLAPPEDWINDOW, 40, 25, 380, 300, NULL, NULL, hThisApp, NULL);  
      25.     if(!hwnd)  
      26.         return 0;  
      27.     ShowWindow(hwnd, nShow);  
      28.     UpdateWindow(hwnd);  
      29.     // 消息循環(huán)   
      30.     MSG msg;  
      31.     while(GetMessage(&msg,NULL,0,0))  
      32.     {  
      33.         TranslateMessage(&msg);  
      34.         DispatchMessage(&msg);  
      35.     }  
      36.     return 0;  
      37. }  
      38.   
      39. LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)  
      40. {  
      41.     switch (msg)  
      42.     {  
      43.     case WM_CREATE:  
      44.         {  
      45.             // 創(chuàng)建對(duì)話框   
      46.             HWND hdlg = CreateDialog(hgAppInst, MAKEINTRESOURCE(IDD_MYFORM), hwnd, (DLGPROC)DlgProc);  
      47.             // 顯示對(duì)話框   
      48.             ShowWindow(hdlg, SW_SHOWNA);  
      49.         }  
      50.         return 0;  
      51.     case WM_DESTROY:  
      52.         PostQuitMessage(0);  
      53.         return 0;  
      54.     default:  
      55.         return DefWindowProc(hwnd,msg,wParam,lParam);  
      56.     }  
      57.     return 0;  
      58. }  
      59.   
      60. // 處理對(duì)話框消息   
      61. INT_PTR CALLBACK DlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)  
      62. {  
      63.     /* .............. */  
      64.     return (INT_PTR)FALSE;  
      65. }  

       

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多