#include <windows.h> const char g_szClassName[] = "myWindowClass"; /* 程式名稱 */ // Step 4: the Window Procedure LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, msg, wParam, lParam); } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX wc; HWND hwnd; MSG Msg; //Step 1: Registering the Window Class // ------------------------------------------------------------- // system wc.cbSize = sizeof(WNDCLASSEX); // 固定 wc.lpfnWndProc = WndProc; // 訊息處理 wc.cbClsExtra = 0; // 設0 wc.cbWndExtra = 0; // 設0 wc.hInstance = hInstance; // 固定 // ------------------------------------------------------------- // style wc.style = 0; // 風格 wc.lpszClassName = g_szClassName; // class namme wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); // 背景顏色 // ------------------------------------------------------------- // resource wc.hCursor = LoadCursor(NULL, IDC_ARROW); // 設定 curosr wc.lpszMenuName = NULL; // 載入 menu wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); // 設定 icon wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); // icon // ------------------------------------------------------------- if(!RegisterClassEx(&wc)) { MessageBox(NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK); return 0; } // Step 2: Creating the Window hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, g_szClassName, "The title of my window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, NULL, NULL, hInstance, NULL); if(hwnd == NULL) { MessageBox(NULL, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK); return EXIT_FAILURE; } ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); // Step 3: The Message Loop while(GetMessage(&Msg, NULL, 0, 0) > 0) { TranslateMessage(&Msg); DispatchMessage(&Msg); } return Msg.wParam; }
文章標籤
全站熱搜
