Форум: "WinAPI";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
ВнизПроблема замены изображения кнопки "Пуск" в Windows 2000 Найти похожие ветки
← →
Виталий17 (2004-12-14 11:54) [0]Здравствуйте! Обнаружил, что в Win 2000 не удается сменить изображение на кнопке "Пуск" при помощи функции API
SendMessage(StartBtn, BM_SETIMAGE, 0, NewImage), StartBtn - хендл кнопки "Пуск" (хендл правильный, проверял в WinSight32), NewImage - хендл нового битмапа. В чем же дело? Кнопка не ловит сообщение
BM_SETIMAGE? Помогите советом, пожалуйста.
← →
DVM © (2004-12-14 12:23) [1]
> Кнопка не ловит сообщение
> BM_SETIMAGE?
точнее обрабатывает и плюет на него. Все рисуется в обработчике WM_PAINT вероятно.
А все хозяйство (NewImage и прочее) в том же адресном пространстве что и кнопка?
← →
Виталий17 (2004-12-14 17:50) [2]Нет, NewImage лежит в другом адресном пространстве, кстати старый битмап тоже в другом.
Интересен такой момент: при посылке хендла нового изображения кнопке(а хендл старого битмапа запоминаем), она окрашивается обычным серым цветом. Посылаем кнопке хендл старого битмапа(запомненный) - рисунок кнопки восстанавливается. Что это значит? WM_PAINT проверяет описатель модуля из которого загружен битмап(по-видимому, Explorer.exe, Shell32.dll или другой файл)? Или есть другие мысли? Заранее спасибо за ответ.
← →
DVM © (2004-12-14 17:59) [3]
> кстати старый битмап тоже в другом.
Другом это каком? Ничего не работает потому, что твоя картинка лежит не в адресном пространстве эксплорера, а в адресном пространстве твоей программы.
← →
Виталий17 (2004-12-14 18:50) [4]Покопался в Explorer.exe и Shell32.dll - там такой картинки нет. Символ Windows есть, но без надписи "Пуск". В то же время надпись не является текстом(проверял через GetWindowTextLength), т.е. символ+надпись - все-таки картинка(если конечно, текст не рисуется в WM_PAINT). Может есть ещё какие ни-ть dll-ки с рисунками?
И какое решение может быть в целом?
← →
z007 (2004-12-14 23:11) [5]>>если конечно, текст не рисуется в WM_PAINT
Текст пишется.
Само слово "Пуск" (в XP - "пуск" берется из ресурсов explorer"а
- строка #578)
Дальше - не знаю: нет у меня Win 2000 :)
← →
DVM © (2004-12-15 11:09) [6]
> Текст пишется.
Точнее рисуется. Кнопка похоже OwnerDraw.
← →
Виталий17 (2004-12-15 21:41) [7]>Само слово "Пуск" (в XP - "пуск" берется из ресурсов explorer"а
>- строка #578)
>Дальше - не знаю: нет у меня Win 2000 :)
Действительно, строка 578 - для темы Windows XP, строка 595 - для классической темы. В Win 2000 только строка 578.
Т.е. придется ставить HOOK(прошу прощения за глупые вопросы - только изучаю Win API), ловить WM_PAIN и рисовать ручками. Но по идее, HOOK должен подтормаживать систему. Есть ли другой, менее ресурсоемкий способ?
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.037 c