4 static UINT WindowCount
;
5 LRESULT WINAPI
TopLevelWndProc(HWND
, UINT
, WPARAM
, LPARAM
);
6 LRESULT WINAPI
ChildWndProc(HWND
, UINT
, WPARAM
, LPARAM
);
9 WinMain(HINSTANCE hInstance
,
10 HINSTANCE hPrevInstance
,
20 wc
.lpszClassName
= "TopLevelClass";
21 wc
.lpfnWndProc
= TopLevelWndProc
;
22 wc
.style
= CS_VREDRAW
| CS_HREDRAW
;
23 wc
.hInstance
= hInstance
;
24 wc
.hIcon
= LoadIcon(NULL
, IDI_APPLICATION
);
25 wc
.hCursor
= LoadCursor(NULL
, IDC_ARROW
);
26 wc
.hbrBackground
= (HBRUSH
)GetStockObject(GRAY_BRUSH
);
27 wc
.lpszMenuName
= NULL
;
30 if (RegisterClass(&wc
) == 0)
32 fprintf(stderr
, "RegisterClass failed (last error 0x%X)\n",
37 wc
.lpszClassName
= "ChildClass";
38 wc
.lpfnWndProc
= ChildWndProc
;
39 wc
.style
= CS_VREDRAW
| CS_HREDRAW
;
40 wc
.hInstance
= hInstance
;
41 wc
.hIcon
= LoadIcon(NULL
, IDI_APPLICATION
);
42 wc
.hCursor
= LoadCursor(NULL
, IDC_ARROW
);
43 wc
.hbrBackground
= (HBRUSH
)GetStockObject(WHITE_BRUSH
);
44 wc
.lpszMenuName
= NULL
;
47 if (RegisterClass(&wc
) == 0)
49 fprintf(stderr
, "RegisterClass failed (last error 0x%X)\n",
54 hWnd1
= CreateWindow("TopLevelClass",
66 hWndChild
= CreateWindow("ChildClass",
67 "Child1 of TopLevel1",
68 WS_CHILD
| WS_BORDER
| WS_CAPTION
| WS_VISIBLE
| WS_SYSMENU
,
79 hWnd2
= CreateWindow("TopLevelClass",
91 hWnd2
= CreateWindow("TopLevelClass",
104 if (! hWnd1
|| ! hWnd2
|| ! hWndChild
)
106 fprintf(stderr
, "CreateWindow failed (last error 0x%X)\n",
111 ShowWindow(hWnd1
, SW_NORMAL
);
112 ShowWindow(hWnd2
, SW_NORMAL
);
114 while(GetMessage(&msg
, NULL
, 0, 0))
116 TranslateMessage(&msg
);
117 DispatchMessage(&msg
);
122 LRESULT CALLBACK
TopLevelWndProc(HWND hWnd
, UINT msg
, WPARAM wParam
, LPARAM lParam
)
130 hDC
= BeginPaint(hWnd
, &ps
);
135 if (0 == --WindowCount
)
142 return DefWindowProc(hWnd
, msg
, wParam
, lParam
);
148 LRESULT CALLBACK
ChildWndProc(HWND hWnd
, UINT msg
, WPARAM wParam
, LPARAM lParam
)
156 hDC
= BeginPaint(hWnd
, &ps
);
161 return DefWindowProc(hWnd
, msg
, wParam
, lParam
);