From bac58b056ac031d55159f17575ae6bf5b111b5a2 Mon Sep 17 00:00:00 2001 From: dreamforceinc Date: Tue, 26 Dec 2023 12:52:17 +0300 Subject: [PATCH] Fixed tray icon with LoadIconMetric() function. --- wCenterWindow/wCenterWindow.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/wCenterWindow/wCenterWindow.cpp b/wCenterWindow/wCenterWindow.cpp index 489e3d1..d073ef6 100644 --- a/wCenterWindow/wCenterWindow.cpp +++ b/wCenterWindow/wCenterWindow.cpp @@ -40,7 +40,7 @@ // Global variables: WCHAR szTitle[MAX_LOADSTRING]{ 0 }; // wCenterWindow's title -HICON hIcon = NULL; +HICON hIconSmall = NULL, hIconLarge = NULL; HMENU hMenu = NULL, hPopup = NULL; HWND hFgWnd = NULL; BOOL bKPressed = FALSE, bMPressed = FALSE, fShowIcon = TRUE, fCheckUpdates = TRUE, bWorkArea = TRUE; @@ -147,16 +147,17 @@ int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmd } LocalFree(szArglist); + LoadIconMetric(hInstance, MAKEINTRESOURCEW(IDI_TRAYICON), LIM_LARGE, &hIconLarge); + LoadIconMetric(hInstance, MAKEINTRESOURCEW(IDI_TRAYICON), LIM_SMALL, &hIconSmall); + WNDCLASSEX wcex = { 0 }; wcex.cbSize = sizeof(WNDCLASSEX); wcex.lpfnWndProc = WndProc; wcex.hInstance = hInstance; - wcex.hIcon = LoadIconW(hInstance, MAKEINTRESOURCE(IDI_TRAYICON)); - LoadIconMetric(hInstance, MAKEINTRESOURCE(IDI_TRAYICON), LIM_LARGE, &(wcex.hIcon)); + wcex.hIcon = hIconLarge; wcex.hCursor = LoadCursorW(nullptr, IDC_ARROW); wcex.lpszClassName = szClass; - wcex.hIconSm = wcex.hIcon; - hIcon = wcex.hIcon; + wcex.hIconSm = hIconSmall; if (!RegisterClassExW(&wcex)) { ShowError(IDS_ERR_CLASS, szTitle); @@ -233,7 +234,8 @@ int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmd if (hKbdHook) UnhookWindowsHookEx(hKbdHook); if (hMenu) DestroyMenu(hMenu); Shell_NotifyIconW(NIM_DELETE, &nid); - DestroyIcon(hIcon); + DestroyIcon(hIconSmall); + DestroyIcon(hIconLarge); HeapFree(hHeap, NULL, szWinClassBuffer); HeapFree(hHeap, NULL, szWinTitleBuffer); @@ -277,7 +279,7 @@ LRESULT CALLBACK WndProc(HWND hMainWnd, UINT message, WPARAM wParam, LPARAM lPar nid.hWnd = hMainWnd; nid.uVersion = NOTIFYICON_VERSION; nid.uCallbackMessage = WM_WCW; - nid.hIcon = hIcon; + nid.hIcon = hIconSmall; nid.uID = IDI_TRAYICON; nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; StringCchCopyW(nid.szTip, _countof(nid.szTip), szTitle);