![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
Dmitry_177 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Создаю кнопки с флагом BS_OWNERDRAW, чтобы самому перерисовывать их в WM_DRAWITEM..
По идее в структуре DrawItemStruct, т.е. так:
если это выполняется то курсор над кнопкой, но так почему-то не работает... А с пунктами меню так работает.. Как мне тогда определить над кнопкой ли курсор, чтобы перерисовать кнопку? |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
||||
|
||||
Dmitry_177 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Я создаю кнопку функцией CreateWindow('BUTTON'...)
Добавлено @ 21:23 Вообще сама программа на одном WinAPI |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
Тогда тебе сюда: http://forum.vingrad.ru/topic-113712/view-all/index.html
|
|||
|
||||
Dmitry_177 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Это я же автор этой темы...
![]() ![]() Добавлено @ 21:50 Может есть какойнибудь другой способ? Это сообщение отредактировал(а) Dmitry_177 - 5.3.2007, 21:49 |
|||
|
||||
Dmitry_177 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Надо использовать функцию TrackMouseEvent? Если да, то помогите примером пожалуйста, что-то я не пойму как она работает...
![]() |
|||
|
||||
Dmitry_177 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Я как понимаю функция срабатывает ОДИН раз, где-то вычитал что в сообщении WM_MOUSELEAVE нужно устанавливать функцию на TME_HOVER, а в WM_MOUSEHOVER на TME_LEAVE, т.е. чтобы одно сообщение вызывало на другую.. Т.е. примерно так:
Но вопрос в том, как ее изначально вызвать? Ведь сообщения WM_MOUSELEAVE и WM_MOUSEHOVER сами ниоткуда то не придут... |
|||
|
||||
Dmitry_177 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Выложу тестовый проект, если кто сможет помогите плиз.. А то у меня не получается..
![]() Присоединённый файл ( Кол-во скачиваний: 11 ) ![]() |
|||
|
||||
ama_kid |
|
||||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 19 Всего: 95 |
А для чего дано сообщение WM_MOUSEMOVE?
После этого тебе будут приходить и mouseleave и mousehover -------------------- самурай без меча подобен самураю с мечом, но только без меча |
||||
|
|||||
Dmitry_177 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Попробовал я вобщем так сделать, вроде работает.. Но блин, пропала прорисовка кнопки при нажатии на нее, я ее обрабатывал в WM_DRAWITEM главной процедуре окна, т.е. в WindowProc. Может из за сабклассинга уже не доходит WM_DRAWITEM главному окну??? Вот весь код тестового проекта:
Можно просто скопировать его в Delphi и компилировать.. Можно конечно обрабатывать WM_LBUTTONDOWN/WM_LBUTTONUP кнопки, но это же только с мышкой, а на кнопку же можно еще нажать и с помощью клавиатуры.. Лучше всего было бы обрабатывать нажатие, чтобы перерисовывать ее в WM_DRAWITEM мне так кажется.. Помогите пожалуста, может кто-то уже делал что я хочу, чтобы не придумывать велосипед.. |
|||
|
||||
ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 19 Всего: 95 |
Во-первых, будь внимательней:
old_proc := Pointer(GetWindowLong(hTestBtn, GWL_WNDPROC)); Во, вторых: при нажатии на кнопку главному окну приходит сообщение WM_COMMAND:
-------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |