From 279b0c7764c3e49db72606c25dd7151137d66b70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= Date: Sat, 2 Apr 2022 23:57:16 +0200 Subject: Move initialization to WM_CREATE. WM_CREATE is sent as soon as the window is created. This means that it is not a good idea to set window-specific variables in the code following CreateWindow. Instead, they should be set in the window procedure's response to WM_CREATE. --- c/main.c | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) (limited to 'c/main.c') diff --git a/c/main.c b/c/main.c index 2adb2f2..eaca8f3 100644 --- a/c/main.c +++ b/c/main.c @@ -61,7 +61,6 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, tszErr = TEXT("Could not register window class."); if (!RegisterClassEx(&wc)) goto f; - /* Create window. */ hWnd = CreateWindowEx( @@ -74,8 +73,6 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, ); tszErr = TEXT("Could not create main window."); if (!hWnd) goto f; - SetWindowPos(hWnd, NULL, -1, -1, Dpi(510), Dpi(400), SWP_NOMOVE); - SetupFonts(); ShowWindow(hWnd, nCmdShow); while (GetMessage(&msg, NULL, 0, 0) > 0) { @@ -95,6 +92,26 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { + case WM_CREATE: + { + HMODULE hModule; + FARPROC GetDpiForWindow; + extern HWND HWnd, HElv; + HWnd = hWnd; + IDPI = 96; + hModule = LoadLibrary(TEXT("User32.dll")); + if (hModule && (GetDpiForWindow = GetProcAddress(hModule, "GetDpiForWindow"))) { + IDPI = GetDpiForWindow(HWnd); + FreeLibrary(hModule); + } + SetWindowPos(hWnd, NULL, -1, -1, Dpi(510), Dpi(400), SWP_NOMOVE); + SetupFonts(); + DlvCreate(); + ElvCreate(); + UpdateTheme(); + SetFocus(HElv); + break; + } case WM_CLOSE: DestroyWindow(hWnd); break; @@ -111,16 +128,6 @@ WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) lpMMI->ptMinTrackSize.y = LvHeight(HDlv)+80; break; } - case WM_CREATE: - { - extern HWND HElv; - HWnd = hWnd; - DlvCreate(); - ElvCreate(); - UpdateTheme(); - SetFocus(HElv); - break; - } case WM_THEMECHANGED: UpdateTheme(); break; -- cgit v1.2.3