13 Windows编程——系统内置窗口子类型之静态子窗口

静态子窗口类型

wndclass:static

13 Windows编程——系统内置窗口子类型之静态子窗口

源码

 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 }
View Code

相关文章:

  • 2022-02-08
  • 2021-12-29
  • 2022-12-23
  • 2021-06-01
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-04
相关资源
相似解决方案