#include <windows.h> /* This is where all the input to the window goes to */ LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { switch(Message) { /* Upon destruction, tell the main thread to stop */ case WM_DESTROY: { PostQuitMessage(0); break; } /* All other messages (a lot of them) are processed using default procedures */ default: return DefWindowProc(hwnd, Message, wParam, lParam); } return 0; } //1.建立WinMain()主函式 //WINAPI 函式修飾符 被稱為棧的資料結構 用來支援引數傳遞 int WINAPI WinMain(HINSTANCE hInstance,//該程式當前執行例項的控制代碼 HINSTANCE hPrevInstance,//當前例項的前一個例項的控制代碼 LPSTR lpCmdLine,//是一個以空終止的字串,指定傳遞給應用程式的命令列引數 int nCmdShow//制定程式的視窗應該如何顯示 ) { //2.設計視窗 WNDCLASSEX wc; //視窗屬性 /* A 'HANDLE', hence the H, or a pointer to our window */ /* A temporary location for all messages */ /* zero out the struct and set the stuff we want to modify */ memset(&wc,0,sizeof(wc));//初始化結構體 wc.cbSize= sizeof(WNDCLASSEX);//賦值結構體大小 wc.lpfnWndProc = WndProc; //視窗處理函式的指標,用來傳送資訊,回撥函式 wc.hInstance= hInstance;//例項控制代碼 wc.hCursor= LoadCursor(NULL, IDC_ARROW);// 指向視窗類的指標 wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);//視窗類的背景刷,為背景刷控制代碼 wc.lpszClassName = "WindowClass";//指向視窗類的指標 //3.註冊視窗 if(!RegisterClassEx(&wc)) { MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK); return 0; } //4.建立視窗 //建立成功後返回值為視窗控制代碼型別 HWND hwnd;//控制代碼,或指向視窗的指標 hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,//視窗的擴充套件風格 "WindowClass",//指定視窗類的名稱,設計視窗類中為LpszClassName成員指定的名稱 "Caption",// 指定視窗類的名字。視窗樣式指定了標題欄,視窗名字將顯示在標題欄上 WS_VISIBLE|WS_OVERLAPPEDWINDOW,//視窗的基本風格 CW_USEDEFAULT, /* x */ CW_USEDEFAULT, /* y */ 640, /* 寬 */ 480, /* 高 */ NULL,//視窗的父視窗控制代碼 NULL,// 視窗的選單控制代碼 hInstance,//應用程式例項控制代碼 NULL);//視窗建立時附加引數 //5.顯示視窗 MSG msg;//所有訊息的臨時位置 if(hwnd == NULL) { MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK); return 0; } while(GetMessage(&msg, NULL, 0, 0) > 0) { //如果沒有接受到錯誤資訊,執行下面函式語句 TranslateMessage(&msg); //資訊轉化 DispatchMessage(&msg); //訊息派遣,把 TranslateMessage轉換的訊息傳送到視窗的訊息處理函式 //此函式在視窗註冊時已經指定 } return msg.wParam;//指定應用程式退出 }