WIN32.01.最簡單的Windows應用程式

來源:互聯網
上載者:User
 1 /*
 2 最簡單的Windows應用程式
 3 如你所想,這是最簡單的Windows應用程式,僅僅啟動一個表單,但是它具備了最大化,最小化,視窗縮放,關閉等準系統。
 4 此為標準的Windows應用程式,我們可以在此基礎上進行擴充,實現更複雜的應用,如添加新控制項、菜單,多表單甚至繪圖等。
 5 
 6 Windows程式都要註冊視窗類別(10個參數,包含視窗處理常式);然後CreateWindow,ShowWindow,UpdateWindow實現視窗
 7 的建立,顯示及更新;然後啟用訊息迴圈(傳輸,分發);注意訊息處理函數,必須處理WM_DESTROY訊息。
 8 關於Windows的訊息處理機制,侯捷《深入淺出MFC》一書也有詳細的介紹,可以參考。
 9 
10 程式來自《Programming Windows》,作者Chales Petzold,此程式只是備忘。 2010-07-18 Phoenix @home
11 */
12 #include <Windows.h>
13 
14 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
15 {
16     switch (message)
17     {
18     case WM_DESTROY:
19         PostQuitMessage(0);
20         return 0;
21     }
22     return DefWindowProc(hwnd,message,wParam,lParam);
23 }
24 
25 int __stdcall WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
26 {
27     TCHAR szAppName[] = L"SimpleWindow";
28     MSG msg;
29     HWND hwndMain;
30     WNDCLASS wndclass;
31 
32     //wndclass 結構共有10個成員,必須要全部設定才能註冊成功
33     wndclass.lpszClassName = szAppName;
34     wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
35     wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
36     wndclass.lpfnWndProc = WndProc;    //指定視窗的訊息處理過程
37     wndclass.hInstance = hInstance;
38     wndclass.cbClsExtra = 0;
39     wndclass.cbWndExtra = 0;
40     wndclass.style = CS_HREDRAW | CS_VREDRAW;
41     wndclass.lpszMenuName = NULL;
42     wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
43 
44     if (!RegisterClass(&wndclass))    //註冊視窗類別
45     {
46         MessageBox(NULL,TEXT("This Program requires Windows NT."),TEXT("Windows NT Required"),MB_ICONSTOP);
47         return 0;
48     }
49 
50     //CreateWindow,ShowWindow,UpdateWindow:建立視窗,顯示並更新視窗視圖
51     hwndMain = CreateWindow(szAppName,TEXT("The Simple Windows Application"),    WS_OVERLAPPEDWINDOW, 
52         CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
53         NULL, NULL,hInstance, NULL);
54     ShowWindow(hwndMain,nShowCmd);
55     UpdateWindow(hwndMain);
56 
57     //Message Loop:啟動訊息迴圈
58     while(GetMessage(&msg,NULL,0,0))
59     {
60         TranslateMessage(&msg);
61         DispatchMessage(&msg);
62     }
63 
64     return msg.wParam ;
65 }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.