Вверх ↑
Ответов: 3889
Рейтинг: 362
#1: 2011-07-17 20:32:19 ЛС | профиль | цитата
kacmem писал(а):
WM_LBUTTONDBLCLK - всё заработало


Вот Вам ещё материал для размышления, WM_LBUTTONDBLCLK обрабатывается только окнами, у которых в стиле класса есть CS_DBLCLKS Если на классических элементах управления этот стиль есть т.к. наследуется, то на каком-нибудь нештатном контроле (если автор не позаботился заранее) такое сообщение может быть просто проигнорировано. Я ничего не делаю просто так, если я выставляю бит (флаг) зажатой левой кнопки мыши в параметре, и если я шлю три сообщения вместо одного - значит зачем-то это нужно.
В данных примерах это нужно для полноценной эмуляции максимума параметров и событий, происходящих при реальном нажатии на кнопку мыши. И для полного понимания происходящего читателями. Я ведь пишу примеры не только Вам, но и всем, кто, надеюсь, когда-либо воспользуется поиском по форуму и найдёт эту тему (а этот вопрос всплывает с завидным постоянством). Если в Вашем случае, по удачному стечению обстоятельств, процедура обработки событий формы имеет нужный стиль и воспринимает двойной клик как два этапа - установку фокуса и нажатие на элемент, то при работе с другими приложениями (я Выше уже объяснил - почему) может так не повезти. Никогда нельзя быть уверенным, на что именно и как реагирует очередной элемент управления: только на одно сообщение, на совокупность сообщений, на параметры в сообщениях и т.д., потому я эмулирую всё целиком, и потом могу копипастить это всюду с большей долей уверенности в работоспособности (даже если сменится логика обработчика в программе-жертве, или сменится сама "жертва")
карма: 1

2
Голосовали:kacmem, ric