静态子窗口类型
wndclass:static
源码
1 #include<Windows.h> 2 #include<Windowsx.h> 3 4 HINSTANCE G_h; 5 LRESULT CALLBACK WindProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); 6 7 int WinMain(HINSTANCE hInst, HINSTANCE tmp, LPSTR szCmd, int nShow) 8 { 9 WNDCLASS WndClass; 10 TCHAR* ClassName = TEXT("MyClass"); 11 HWND hwnd; 12 MSG msg; 13 HBRUSH hBrush = CreateSolidBrush(RGB(200, 200, 200)); 14 15 G_h = hInst; 16 WndClass.cbClsExtra = 0; 17 WndClass.cbWndExtra = 0; 18 WndClass.hbrBackground = hBrush; 19 WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); 20 WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); 21 WndClass.hInstance = hInst; 22 WndClass.lpfnWndProc = WindProc; 23 WndClass.lpszClassName = ClassName; 24 WndClass.lpszMenuName = NULL; 25 WndClass.style = CS_VREDRAW | CS_HREDRAW; 26 27 if (!RegisterClass(&WndClass)) 28 { 29 MessageBox(NULL, TEXT("Gegister Class Fail!!"), TEXT("error"), MB_OK); 30 return 0; 31 } 32 33 //CreateWindow返回之前,会发送WM_CREATE消息 34 hwnd = CreateWindow(ClassName, TEXT("Hello"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 300, NULL, NULL, hInst, NULL); 35 if (hwnd == NULL) 36 { 37 MessageBox(NULL, TEXT("Create Window Fail!!"), TEXT("error"), MB_OK); 38 return 0; 39 } 40 ShowWindow(hwnd, nShow); 41 UpdateWindow(hwnd); 42 43 while (GetMessage(&msg, NULL, 0, 0)) 44 { 45 TranslateMessage(&msg); 46 DispatchMessage(&msg); 47 } 48 49 return 0; 50 } 51 52 LRESULT CALLBACK WindProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 53 { 54 PAINTSTRUCT pt; 55 static HWND chwnd; 56 int cx, cy; 57 HBRUSH hBrush = CreateSolidBrush(RGB(0, 0, 240)); 58 switch (message) 59 { 60 case WM_CREATE: 61 //法1 获得主程序句柄 62 chwnd = CreateWindow(TEXT("static"), TEXT("中国"), WS_CHILD | WS_VISIBLE|SS_CENTER, 0, 0, 0, 0, hwnd, (HMENU)1, ((LPCREATESTRUCT)lParam)->hInstance, NULL); 63 //法2 获得主程序句柄 64 //hwnd = CreateWindow(TEXT("static"), TEXT("中国"), WS_CHILD | WS_VISIBLE, 0, 0, 50, 50, hwnd, (HMENU)1, G_h, NULL); 65 //发3 获得主程序句柄 66 //hwnd = CreateWindow(TEXT("static"), TEXT("中国"), WS_CHILD | WS_VISIBLE, 0, 0, 50, 50, hwnd, (HMENU)1, GetModuleHandle(NULL), NULL); 67 return 0; 68 case WM_SIZE: 69 cx = LOWORD(lParam); 70 cy = HIWORD(lParam); 71 MoveWindow(chwnd, cx / 20,cy / 20, cx / 2, cy / 10, TRUE); 72 return 0; 73 case WM_CTLCOLORSTATIC: 74 SetTextColor((HDC)wParam, RGB(255, 0, 0)); 75 SetBkMode((HDC)wParam, TRANSPARENT); 76 return (LRESULT)hBrush; 77 case WM_COMMAND: 78 return 0; 79 case WM_DESTROY: 80 PostQuitMessage(0); 81 return 0; 82 default: 83 break; 84 } 85 86 return DefWindowProc(hwnd, message, wParam, lParam); 87 }