This should be reproducable:
extern "C" LRESULT CALLBACK gui_wproc(HWND hWnd, UINT uMsg, WPARAM wParam,
LPARAM lParam)
{
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
}
int main()
{
WNDCLASSEX wc = {0};
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW|CS_VREDRAW; // sent WM_PAINT when size
gets changed
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hIcon = LoadIconA(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursorA(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW);
wc.hIconSm = LoadIconA(NULL, IDI_APPLICATION);
wc.lpfnWndProc = (WNDPROC) gui_wproc;
wc.hInstance = (HINSTANCE)::GetModuleHandleA(NULL);
wc.lpszClassName = "GLBasicDialog";
wc.lpszMenuName = "GLBasicDialog";
RegisterClassExA(&wc);
HWND hwnd = ::CreateWindowExA(
WS_EX_COMPOSITED|WS_EX_LAYERED // no flicker in aero
, "GLBasicDialog", "Test",
WS_THICKFRAME|WS_VISIBLE | WS_SYSMENU | WS_CAPTION | WS_OVERLAPPED
|WS_MAXIMIZEBOX|WS_MINIMIZEBOX
| WS_CLIPSIBLINGS
, 0,0,400,200, NULL, 0, (HINSTANCE)::GetModuleHandleA(NULL), 0);
CreateWindowExA(0, "BUTTON", "Test", BS_PUSHLIKE|BS_AUTOCHECKBOX
|WS_CHILD|WS_VISIBLE|WS_TABSTOP,
0,0,64,32,hwnd, NULL,
(HINSTANCE)::GetModuleHandleA(NULL), 0);
UpdateWindow(hwnd);
ShowWindow(hwnd, SW_SHOWNORMAL);
MSG msg;
while(GetMessage(&msg, hwnd, 0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}