From 26f70ab37bee8ffd70b662ff999613c643215605 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= Date: Thu, 14 Jul 2022 02:34:42 +0200 Subject: Initialize global variables in the right place. The rules for what messages are sent at window creation -- and in which order -- are neither intuitive or clear. WM_CREATE can NOT be relied upon to initialize global state required by handlers of other messages (such as WM_GETMINMAXINFO, which seems to be sent before WM_CREATE). Thus, the better solution is to initialize everything using a CBT hook before the window procedure is even run. Because CBTProc creates (child): windows of its own, though, one must be careful to only run the initialization once, which is done by checking g_hWnd. --- c/listview.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'c/listview.cpp') diff --git a/c/listview.cpp b/c/listview.cpp index 09a3024..8e92ea1 100644 --- a/c/listview.cpp +++ b/c/listview.cpp @@ -9,8 +9,7 @@ extern HFONT g_hfNormal; extern HWND g_hWnd; static LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); -void -ListView::Create(HMENU hMenu, DWORD dwStyle) +ListView::ListView(HMENU hMenu, DWORD dwStyle) { m_hWnd = CreateWindowEx( WS_EX_CLIENTEDGE, -- cgit v1.2.3