1+ #include <windows.h>
2+ #pragma comment(lib, "user32.lib")
3+ #pragma comment(lib, "gdi32.lib")
4+
5+ LRESULT CALLBACK WndProc (HWND , UINT , WPARAM , LPARAM );
6+ LRESULT CALLBACK PanelProc (HWND , UINT , WPARAM , LPARAM );
7+
8+ void RegisterRedPanelClass (void );
9+ void RegisterBluePanelClass (void );
10+
11+ int WINAPI wWinMain (HINSTANCE hInstance , HINSTANCE hPrevInstance ,
12+ PWSTR lpCmdLine , int nCmdShow )
13+ {
14+ MSG msg ;
15+
16+ WNDCLASSW wc = {0 };
17+ wc .lpszClassName = L"Windows" ;
18+ wc .hInstance = hInstance ;
19+ wc .lpfnWndProc = WndProc ;
20+
21+ RegisterClassW (& wc );
22+ CreateWindowW (wc .lpszClassName , L"Windows" ,
23+ WS_OVERLAPPEDWINDOW | WS_VISIBLE ,
24+ 100 , 100 , 400 , 300 , 0 , 0 , hInstance , 0 );
25+
26+ while (GetMessage (& msg , NULL , 0 , 0 ))
27+ {
28+ TranslateMessage (& msg );
29+ DispatchMessage (& msg );
30+ }
31+
32+ return (int )msg .wParam ;
33+ }
34+
35+ LRESULT CALLBACK WndProc (HWND hwnd , UINT msg ,
36+ WPARAM wParam , LPARAM lParam )
37+ {
38+ switch (msg )
39+ {
40+ case WM_CREATE :
41+ RegisterRedPanelClass ();
42+ CreateWindowW (L"RedPanelClass" , NULL ,
43+ WS_CHILD | WS_VISIBLE ,
44+ 20 , 20 , 80 , 80 ,
45+ hwnd , (HMENU )1 , NULL , NULL );
46+ RegisterBluePanelClass ();
47+ CreateWindowW (L"BluePanelClass" , NULL ,
48+ WS_CHILD | WS_VISIBLE ,
49+ 120 , 20 , 80 , 80 ,
50+ hwnd , (HMENU )2 , NULL , NULL );
51+ break ;
52+
53+ case WM_DESTROY :
54+ PostQuitMessage (0 );
55+ break ;
56+ }
57+ return DefWindowProcW (hwnd , msg , wParam , lParam );
58+ }
59+
60+ LRESULT CALLBACK PanelProc (HWND hwnd , UINT msg , WPARAM wParam , LPARAM lParam )
61+ {
62+ switch (msg )
63+ {
64+ case WM_LBUTTONUP :
65+ MessageBeep (MB_OK );
66+ break ;
67+ }
68+ return DefWindowProcW (hwnd , msg , wParam , lParam );
69+ }
70+
71+ void RegisterRedPanelClass ()
72+ {
73+ HBRUSH hb = CreateSolidBrush (RGB (255 , 0 , 0 ));
74+ WNDCLASSW wc = {0 };
75+ wc .lpszClassName = L"RedPanelClass" ;
76+ wc .hbrBackground = hb ;
77+ wc .lpfnWndProc = PanelProc ;
78+ wc .hCursor = LoadCursor (0 , IDC_ARROW );
79+ RegisterClassW (& wc );
80+ }
81+
82+ void RegisterBluePanelClass ()
83+ {
84+ WNDCLASSW wc = {0 };
85+ wc .lpszClassName = L"BluePanelClass" ;
86+ wc .hbrBackground = CreateSolidBrush (RGB (0 , 0 , 255 ));
87+ wc .lpfnWndProc = PanelProc ;
88+ wc .hCursor = LoadCursor (0 , IDC_ARROW );
89+ RegisterClassW (& wc );
90+ }
0 commit comments