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 }