[TASKMGR]: Clarify the icon handle retrieval, getting rid also of that xhIcon variable.

CORE-8148 #resolve #comment The original code was ok, but was not very clear.

svn path=/trunk/; revision=63941
This commit is contained in:
Hermès Bélusca-Maïto 2014-08-24 16:58:39 +00:00
parent 1270840cc9
commit da06be6a77

View file

@ -332,12 +332,10 @@ BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
WCHAR szText[260]; WCHAR szText[260];
BOOL bLargeIcon; BOOL bLargeIcon;
BOOL bHung = FALSE; BOOL bHung = FALSE;
HICON* xhIcon = (HICON*)&hIcon;
typedef int (FAR __stdcall *IsHungAppWindowProc)(HWND); typedef int (FAR __stdcall *IsHungAppWindowProc)(HWND);
IsHungAppWindowProc IsHungAppWindow; IsHungAppWindowProc IsHungAppWindow;
/* Skip our window */ /* Skip our window */
if (hWnd == hMainWnd) if (hWnd == hMainWnd)
return TRUE; return TRUE;
@ -357,20 +355,21 @@ BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
} }
noApps = FALSE; noApps = FALSE;
/* Get the icon for this window */ /* Get the icon for this window */
hIcon = NULL; hIcon = NULL;
SendMessageTimeoutW(hWnd, WM_GETICON,bLargeIcon ? ICON_BIG /*1*/ : ICON_SMALL /*0*/, 0, 0, 1000, (PDWORD_PTR)xhIcon); SendMessageTimeoutW(hWnd, WM_GETICON, bLargeIcon ? ICON_BIG : ICON_SMALL, 0, 0, 1000, (PDWORD_PTR)&hIcon);
if (!hIcon) if (!hIcon)
{ {
/* We failed, try to retrieve other icons... */
hIcon = (HICON)(LONG_PTR)GetClassLongPtrW(hWnd, bLargeIcon ? GCL_HICON : GCL_HICONSM); hIcon = (HICON)(LONG_PTR)GetClassLongPtrW(hWnd, bLargeIcon ? GCL_HICON : GCL_HICONSM);
if (!hIcon) hIcon = (HICON)(LONG_PTR)GetClassLongPtrW(hWnd, bLargeIcon ? GCL_HICONSM : GCL_HICON); if (!hIcon) hIcon = (HICON)(LONG_PTR)GetClassLongPtrW(hWnd, bLargeIcon ? GCL_HICONSM : GCL_HICON);
if (!hIcon) SendMessageTimeoutW(hWnd, WM_QUERYDRAGICON, 0, 0, 0, 1000, (PDWORD_PTR)xhIcon); if (!hIcon) SendMessageTimeoutW(hWnd, WM_QUERYDRAGICON, 0, 0, 0, 1000, (PDWORD_PTR)&hIcon);
if (!hIcon) SendMessageTimeoutW(hWnd, WM_GETICON, bLargeIcon ? ICON_SMALL /*0*/ : ICON_BIG /*1*/, 0, 0, 1000, (PDWORD_PTR)xhIcon); if (!hIcon) SendMessageTimeoutW(hWnd, WM_GETICON, bLargeIcon ? ICON_SMALL : ICON_BIG, 0, 0, 1000, (PDWORD_PTR)&hIcon);
}
if (!hIcon) /* If we still do not have any icon, load the default one */
hIcon = LoadIconW(hInst, bLargeIcon ? MAKEINTRESOURCEW(IDI_WINDOW) : MAKEINTRESOURCEW(IDI_WINDOWSM)); if (!hIcon) hIcon = LoadIconW(hInst, bLargeIcon ? MAKEINTRESOURCEW(IDI_WINDOW) : MAKEINTRESOURCEW(IDI_WINDOWSM));
}
bHung = FALSE; bHung = FALSE;