Отправить двойной щелчок на просмотр списка (c ++, а не .net!) - PullRequest
1 голос
/ 10 июня 2009

Я хочу отправить двойной щелчок на просмотр списка. Из того, что я прочитал на msdn, мне кажется, я должен отправить сообщение WM_NOTIFY и что-то с NM_DBLCLK. Но я не очень хорошо понимаю, как это реализовать. Я работал с SendMessage раньше, но MSDN не очень ясно, как заполнить структуры и так:

WM_NOTIFY http://msdn.microsoft.com/en-us/library/bb775583(VS.85).aspx NM_DBLCLK http://msdn.microsoft.com/en-us/library/bb774867(VS.85).aspx

Ответы [ 4 ]

2 голосов
/ 10 июня 2009

Я подозреваю, что вы идете по неверному пути. Вероятно, лучший способ отправить сообщение о двойном щелчке - это отправить два отдельных клика, один за другим. Это дает наилучшие шансы на работу и не удивляет приложение с уведомлением о двойном щелчке на пустом месте.

Если вы хотите отправить уведомление в родительское окно, тогда вы можете начать:

NMITEMACTIVATE activate={0};
activate.hdr.hwndFrom = hWnd; // of the list view control
activate.hdr.idFrom = id; // of the list view control
activate.hdr.code = NM_DBLCLK;

activate.iItem = iItem; // the id of the list item to click
activate.iSubItem = iSubItem;
activate.ptAction = ptAction; // where the event occurred

::SendMessage(hWndParent, WM_NOTIFY, id, reinterpret_cast<LPNMITEMACTIVATE>(&activate));
0 голосов
/ 26 декабря 2010

Мы можем использовать симуляцию щелчка мышью, используя следующие функции:

mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTDOWN, X, Y,0,0);
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTUP, X, Y,0,0);
0 голосов
/ 02 марта 2010

может быть лучше генерировать события мыши на уровне драйвера, используя mouse_event API, а не отправлять поддельные сообщения WM_MOUSE http://msdn.microsoft.com/en-us/library/ms646260%28VS.85%29.aspx

0 голосов
/ 10 июня 2009

WM_NOTIFY отправляется родительскому элементу элемента управления для информирования родителя о том, что произошло событие. Вы ничего не добьетесь, отправив его самому элементу управления.

В противном случае, я не совсем понимаю, что вы пытаетесь сделать. Не могли бы вы уточнить?

...