應用程序窗口示例,窗口示例
1 //Windows.h文件中包含應用程序中所需的數據類型和數據結構的定義
2 #include <Windows.h>
3 #include <tchar.h>
4
5 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //窗口函數說明
6 //------------------------------以下是入口函數的代碼------------------------------
7 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
8 {
9 WNDCLASSEX wcex;
10 HWND hWnd;
11 MSG msg;
12 TCHAR szWindowClass[] = L"窗口示例"; //窗口類名
13 TCHAR szTitle[] = L"My Windows"; //窗口標題名
14
15 //------------------------------以下初始化窗口類------------------------------
16 wcex.cbSize = sizeof(WNDCLASSEX); //窗口類的大小
17 wcex.style = 0; //窗口類型為默認類型
18 wcex.lpfnWndProc = WndProc; //窗口處理函數為WndProc
19 wcex.cbClsExtra = 0; //窗口類無擴展
20 wcex.cbWndExtra = 0; //窗口實例無擴展
21 wcex.hInstance = hInstance; //當前實例句柄
22 wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
23 //窗口的圖標為默認圖標
24 wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
25 //窗口采用箭頭光標
26 wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //窗口背景為白色
27 wcex.lpszMenuName = NULL; //窗口中無菜單
28 wcex.lpszClassName = szWindowClass; //窗口類名為“窗口示例”
29 wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
30 //窗口的小圖標為默認圖標
31
32 //------------------------------以下進行窗口類的注冊------------------------------
33 if (!RegisterClassEx(&wcex)) //如果注冊失敗則發出警告
34 {
35 MessageBox(NULL, _T("窗口類注冊失敗!"), _T("窗口注冊"), NULL);
36 return 1;
37 }
38 //------------------------------以下創建窗口------------------------------
39 hWnd = CreateWindow(
40 szWindowClass, //窗口類名
41 szTitle, //窗口實例的標題名
42 WS_OVERLAPPEDWINDOW, //窗口的風格
43 CW_USEDEFAULT, CW_USEDEFAULT, //窗口左下角坐標為默認值
44 CW_USEDEFAULT, CW_USEDEFAULT, //窗口的高和寬為默認值
45 NULL, //此窗口無父窗口
46 NULL, //此窗口無主菜單
47 hInstance, //創建此窗口應用程序的當前句柄
48 NULL //不使用該值
49 );
50 if (!hWnd) //如果創建窗口失敗則發出警告
51 {
52 MessageBoxW(NULL, L"創建窗口失敗!", _T("創建窗口"), NULL);
53 return 1;
54 }
55 ShowWindow(hWnd, nCmdShow); //顯示窗口
56 UpdateWindow(hWnd); //繪制用戶區
57 while (GetMessage(&msg, NULL, 0, 0)) //消息循環
58 {
59 TranslateMessage(&msg);
60 DispatchMessage(&msg);
61 }
62
63 return(int)msg.wParam; //程序終止時將信息返回系統
64 }
65 //------------------------------以下是窗口函數的代碼------------------------------
66 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
67 {
68 switch (message)
69 {
70 case WM_DESTROY:
71 PostQuitMessage(0); //調用PostQuitMessage發出WM_QUIT消息
72 break;
73 default:
74 return DefWindowProc(hWnd, message, wParam, lParam);
75 //默認時采用系統消息默認處理函數
76 break;
77 }
78 return 0;
79 }