![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Как мне обрабатывать сообщение WM_LBUTTONDOWN по нажатию на кнопке? Т.е. нужно определить на какой кнопке была нажата левая кнопка мыши, попробовал так:
не работает, где hButton это хендл кнопки |
|||
|
||||
| Sunvas |
|
||||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: нет Всего: 89 |
Создать наследника и в нем ловить это сообщение.
А не проще ли воспользовать событием onmouseup/onmousedow? Там в переменной Button храниться такая инфа. -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
||||
|
|||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Я на одном API делаю, без VCL
|
|||
|
||||
| ArtemRubtsov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 12.11.2006 Репутация: нет Всего: нет |
можно координаты компонентов брать на форме и исходя из этого сделать вывод где была нажата кнопка
но лучше всего создать обработчика onmousedown для кнопки Если есть кнопка (пусть даже созданная при старте приложения) значит у нее есть onmousedown по умолчанию, просто нужно его описать и будет счастье а еще у кнопки есть OnClick :) Это сообщение отредактировал(а) ArtemRubtsov - 24.11.2006, 04:51 |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
обрабатывай не WM_LBUTTONDOWN, а WM_COMMAND. В lParam будет хэндл кнопки
-------------------- Обижено школьников: 8 |
|||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Почитал про WM_COMMAND, там про клавиши ускорителя, что это? И про пункты меню...
|
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
гарячие комбинации
а еще там про контролы, например кнопки Добавлено @ 10:38 если HIWORD(wParam)>1 то это точно контрол. Но можно просто сравнить HWND(lParam) с хэндлом кнопки и если совпадает - вызвать твой обработчик -------------------- Обижено школьников: 8 |
|||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
А если нужно еще WM_LBUTTONUP обрабатывать?
Добавлено @ 10:58 А еще попробовал я WM_COMMAND обрабатывать, у меня почему-то он срабатывает на двойном щелчке мыши а не на одном.. |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
вот так вроде должно устроить
Это сообщение отредактировал(а) bems - 24.11.2006, 11:37 -------------------- Обижено школьников: 8 |
|||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Я так и сделал с WM_COMMAND...
Да, мне именно нажатие и отпускание обрабатывать нужно... |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
отредактировал сообщение, теперь вроде то что надо
Добавлено @ 11:43 WM_COMMAND можно и выкинуть -------------------- Обижено школьников: 8 |
|||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Спасибо большое!
|
|||
|
||||
| BUGOR |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 2 Всего: 16 |
Тебе координаты мыши в момент клика известны? Известны. Тогда юзай WindowFromPoint, он вернёт нэндл объекта над которым находится курсор.
|
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
В родительском окне координаты не известны - WM_LBUTTONDOWN приходит кнопке, а не родителю.
Если пользоваться GetCursorPos то нужно знать хотя бы момент нажатия -------------------- Обижено школьников: 8 |
|||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Кстати насчет WindowFromPoint, она определяет хендл любого окна, даже чужого? А есть какаянибудь типа этой функции, которая определяет хендл только в моем приложении, а если в точке находится чужое окно, то например вернет 0?
|
|||
|
||||
![]()
|
| Правила форума "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. |