Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Получить иконку системного меню окна

342
20 декабря 2008 года
Yos
209 / / 21.06.2003
Вообщем проблема следующая, необходимо получить иконку, которая отображается на месте кнопки системного меню окна.

Чем в данном случае плохо с GetClassLong - она возвращает не то что реально отборажается, те для worda и других "нормальных" окон к примеру все правильно, но как только это что то системное, типа TaskMana или сетевых подключений то усе, приехали. В первом случае ничего не вернет а во втором иконку типа папки, хотя отображается шарик с проводом.

Если в первом случае (с TaskManom) можно получить путь к Exeшнику и вытащить от туда, то во втором нельзя, так как это не совсем оно.

Вообщем сижу и думаю, уже столько всего перерыл, но пока вопросов больше...

Буду признателен, а пока полез рыть дальше...
3.7K
20 декабря 2008 года
0nni
326 / / 24.06.2008
 
Код:
SendMessage(wnd, WM_GETICON, ICON_BIG, 0)

вроде нормально работает.
342
21 декабря 2008 года
Yos
209 / / 21.06.2003
Я ее юзал, но она выдавала тоже самое что и GetClassLong, но сейчас разобрался в чем дело - я пытался вытащить МАЛЕНЬКУЮ иконку, а ее можно вытащить только при SendMessage(wnd, WM_GETICON, 2, 0) но и то только для ХР (ICON_BIG = 1)

Так как предполагается использование в разных системах то применяем следующий механизм (на все случаи)

 
Код:
// получаем новые данные описания
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);


Так что Спасибо за "правильное место" в "правильное время"...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог