Получить иконку системного меню окна
Чем в данном случае плохо с GetClassLong - она возвращает не то что реально отборажается, те для worda и других "нормальных" окон к примеру все правильно, но как только это что то системное, типа TaskMana или сетевых подключений то усе, приехали. В первом случае ничего не вернет а во втором иконку типа папки, хотя отображается шарик с проводом.
Если в первом случае (с TaskManom) можно получить путь к Exeшнику и вытащить от туда, то во втором нельзя, так как это не совсем оно.
Вообщем сижу и думаю, уже столько всего перерыл, но пока вопросов больше...
Буду признателен, а пока полез рыть дальше...
Код:
SendMessage(wnd, WM_GETICON, ICON_BIG, 0)
вроде нормально работает.
Так как предполагается использование в разных системах то применяем следующий механизм (на все случаи)
Код:
// получаем новые данные описания
pItem->hIcon = (HICON)SendMessage(hWindow,WM_GETICON,2,0);
if( !pItem->hIcon ) pItem->hIcon = (HICON)GetClassLong(hWindow,GCL_HICONSM);
if( !pItem->hIcon ) pItem->hIcon = (HICON)SendMessage(hWindow,WM_GETICON,ICON_BIG,0);
pItem->hIcon = (HICON)SendMessage(hWindow,WM_GETICON,2,0);
if( !pItem->hIcon ) pItem->hIcon = (HICON)GetClassLong(hWindow,GCL_HICONSM);
if( !pItem->hIcon ) pItem->hIcon = (HICON)SendMessage(hWindow,WM_GETICON,ICON_BIG,0);
Так что Спасибо за "правильное место" в "правильное время"...