winMain中的參數: hinstance - 該參數為Windows 為應用程式生成的實例句柄。實例是用來跟蹤資源的指針。 hprevinstance 前一個實例,即程式的父親的程式實例。 ipcmdline - 命令行參數。 ncmdshow 指出如何打開程式的視窗。ncmdshow的值一般會 ...
1 #include <windows.h> 2 3 LRESULT CALLBACK WindowProc( 4 _In_ HWND hwnd, 5 _In_ UINT uMsg, 6 _In_ WPARAM wParam, 7 _In_ LPARAM lParam 8 ); 9 10 int CALLBACK WinMain( 11 _In_ HINSTANCE hInstance, 12 _In_ HINSTANCE hPrevInstance, 13 _In_ LPSTR, 14 _In_ int nCmdShow 15 ) 16 { 17 WCHAR * cls_Name = TEXT("My Class"); 18 19 WNDCLASS wc = {}; 20 wc.hbrBackground = (HBRUSH)COLOR_WINDOW; 21 wc.lpfnWndProc = WindowProc; 22 wc.lpszClassName = cls_Name; 23 wc.hInstance = hInstance; 24 25 RegisterClass(&wc); 26 27 HWND hwnd = CreateWindow( 28 cls_Name, //類名,要和剛纔註冊的一致 29 L"我的應用程式", //視窗標題文字 30 WS_OVERLAPPEDWINDOW, //視窗外觀樣式 31 38, //視窗相對於父級的X坐標 32 20, //視窗相對於父級的Y坐標 33 480, //視窗的寬度 34 250, //視窗的高度 35 NULL, //沒有父視窗,為NULL 36 NULL, //沒有菜單,為NULL 37 hInstance, //當前應用程式的實例句柄 38 NULL); //沒有附加數據,為NULL 39 if (hwnd == NULL) 40 { 41 return 0; 42 } 43 44 ShowWindow(hwnd, SW_SHOW); 45 46 UpdateWindow(hwnd); 47 48 49 MSG msg; 50 while (GetMessage(&msg, NULL, 0, 0)) 51 { 52 TranslateMessage(&msg); 53 DispatchMessage(&msg); 54 } 55 return 0; 56 } 57 58 59 LRESULT CALLBACK WindowProc( 60 _In_ HWND hwnd, 61 _In_ UINT uMsg, 62 _In_ WPARAM wParam, 63 _In_ LPARAM lParam 64 ) 65 { 66 switch (uMsg) 67 { 68 case WM_DESTROY: 69 { 70 PostQuitMessage(0); 71 return 0; 72 } 73 default: 74 break; 75 } 76 return DefWindowProc(hwnd, uMsg, wParam, lParam); 77 } 78 79 /* typedef struct tagWNDCLASS { 80 UINT style; 81 WNDPROC lpfnWndProc; 82 int cbClsExtra; 83 int cbWndExtra; 84 HINSTANCE hInstance; 85 HICON hIcon; 86 HCURSOR hCursor; 87 HBRUSH hbrBackground; 88 LPCTSTR lpszMenuName; 89 LPCTSTR lpszClassName; 90 } WNDCLASS, *PWNDCLASS; */
winMain中的參數:
hinstance - 該參數為Windows 為應用程式生成的實例句柄。實例是用來跟蹤資源的指針。
hprevinstance 前一個實例,即程式的父親的程式實例。
ipcmdline - 命令行參數。
ncmdshow 指出如何打開程式的視窗。ncmdshow的值一般會用於ShowWindows()中使用,用來設置新建子視窗的形式。
參數的值可以為:
SW_FORCEMINIMIZE:在WindowNT5.0中最小化視窗,即使擁有視窗的線程被掛起也會最小化。在從其他線程最小化視窗時才使用這個參數。
SW_HIDE:隱藏視窗並激活其他視窗。
SW_MAXIMIZE:最大化指定的視窗。
SW_MINIMIZE:最小化指定的視窗並且激活在Z序中的下一個頂層視窗。
SW_RESTORE:激活並顯示視窗。如果視窗最小化或最大化,則系統將視窗恢復到原來的尺寸和位置。在恢復最小化視窗時,應用程式應該指定這個標誌。
SW_SHOW:在視窗原來的位置以原來的尺寸激活和顯示視窗。
SW_SHOWDEFAULT:依據在STARTUPINFO結構中指定的SW_FLAG標誌設定顯示狀態,STARTUPINFO 結構是由啟動應用程式的程式傳遞給CreateProcess函數的。
SW_SHOWMAXIMIZED:激活視窗並將其最大化。
SW_SHOWMINIMIZED:激活視窗並將其最小化。
SW_SHOWMINNOACTIVE:視窗最小化,激活視窗仍然維持激活狀態。
SW_SHOWNA:以視窗原來的狀態顯示視窗。激活視窗仍然維持激活狀態。
SW_SHOWNOACTIVATE:以視窗最近一次的大小和狀態顯示視窗。激活視窗仍然維持激活狀態。
SW_SHOWNORMAL:激活並顯示一個視窗。如果視窗被最小化或最大化,系統將其恢復到原來的尺寸和大小。應用程式在第一次顯示視窗的時候應該指定此標誌。