![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Кнопка ПУСК [D7, Win2k]
Lessa © (2004-06-02 21:50:00)Подскажите ответ: на событие формы onCreate код
Image := TPicture.create;
Image.bitmap.LoadFromFile('NewButton.BMP');
StartButton := FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil);
oldBitmap := SendMessage(StartButton, BM_SetImage, 0, Image.bitmap.handle);
Должен меняться заголовок кнопки ПУСК. Но ничего не происходит. То есть старая картинка исчезает, а новая не появляется. Голая кнопка надоедает, старая -- неинтересно (восстанавливаю на onDestroy). И еще. Перемещаться она тоже отказывается. Из-за чего это и что можно сделать?
GanibalLector (2004-06-03 22:08:00) [1]А...знакомо.
Вот тут теже грабли http://forums.realcoding.net/topic2022.html
DVM (2004-06-03 20:45:00) [2]
> Lessa (03.06.04 19:46) [15]
Как уже сказали, надо заменить оконную процедуру кнопки на свою. Но эта процедура должна быть в том же адресном пространстве, что и кнопка. В чужое АП можно попасть с пом любого хука. Заменив процедуру кнопки на свою, надо везде, кроме как в WM_PAINT вызывать старую процедуру, а для WM_PAINT свою. Только следует учесть, что при этом пропадет и рамка кнопки, которую тоже надо будет дорисовать, учитывая ее текущее состояние. Что до XP - там есть стандартные средства в виде тем оформления, в остальных системах так как я написал.
Вобщем возни полно.
Lessa (2004-06-03 19:46:00) [3]картинку сменить МОЖНО, но опять-таки на доли секунды. Смутное подозрение витает в воздухе, что это винда мне противостоит... но докажу завтра, попробую тот же опыт на winME.
Что за маниакальная привычка к аккуратности у вин2000!.. Все ставит на место.
DeadMeat (2004-06-03 19:37:00) [4]> [12] Lessa (03.06.04 17:46)
> но охотно соглашается ходить "голой"
Какаято кнопка для нудистов...
А вообще надо переопределить процедуру "получения сообщений" этой кнопки, т.е. WindowProc
---
...Death Is Only The Begining...
Clickmaker (2004-06-03 19:23:00) [5]
> Lessa (03.06.04 17:46) [12]
Ну просто детектив какой-то :)
Lessa (2004-06-03 17:46:00) [6]Значит, так. Путем многократных экспериментов и тыков вслепую установлено, что:
-findwindow указывает именно на кнопку Пуск
-кнопка отказывается менять картинку, но охотно соглашается ходить "голой" (после перезапуска explorer, однако, снова приобретает прежний вид)
-перемещаться и изменять размеры она желает только на короткий промежуток времени, потом снова "прыгает" на место
-убрать ее тоже можно.
???
Lessa (2004-06-03 14:46:00) [7]Так как насчет сабжа? Упрямость кнопки просто раздражает. Может, у кого-то была подобная проблема?
Или, если нет, подскажите, как отловить нажатие на нее.
DVM (2004-06-03 13:31:00) [8]>Нет. Она со стилем BS_BITMAP
В XP без этого стиля. Там хоть эта кнопка и стандартная, но оконная прцедура ее переопределена, там картинка и рисуется вероятно.
Lessa (2004-06-03 12:10:00) [9]там только статьи
Игорь Шевченко (2004-06-03 11:54:00) [10]
> P.S. код не мой, а взят с сайта delphiworld, причем там
> клятвенно заверяют, что все работает в лучшем виде.
Тогда наверное, разумно там задать вопрос ?
Lessa (2004-06-03 10:59:00) [11]О! Вот это открытие! Кнопка перемещается на доли секунды, а потом снова становится на место!!! Почему?!
P.S. код не мой, а взят с сайта delphiworld, причем там клятвенно заверяют, что все работает в лучшем виде.
Clickmaker (2004-06-03 10:13:00) [12]
> DVM © (02.06.04 23:44) [4]
> >Lessa (02.06.04 21:50)
> во-первых, кнопка Пуск OWNER DRAW
Нет. Она со стилем BS_BITMAP
Lessa (2004-06-03 09:37:00) [13]Да?.. Но ведь рисунок-то исчезает.
DVM (2004-06-02 23:44:00) [14]>Lessa (02.06.04 21:50)
во-первых, кнопка Пуск OWNER DRAW, т.е ей глубоко по барабану, кто и что там за рисунок на нее помещает - рисунок сий рисует родитель кнопки.
во-вторых риунок ваш в другом адресном пространстве.
Игорь Шевченко (2004-06-02 22:29:00) [15]А проверять, что функции FindWindow возвращают, не поможет ?
Lessa (2004-06-02 22:04:00) [16]MoveWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil),
300, 0, 80, 22, true);
Вот так
Игорь Шевченко (2004-06-02 22:01:00) [17]
> И еще. Перемещаться она тоже отказывается.
Это как понимать ?