1

我想双击一个列表视图。从我在 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

4 回答 4

2

我怀疑你走错了路。发送双击消息的最佳方式可能是发送两次单击,一个紧接着另一个。这有最好的工作机会并且毫不奇怪的双击通知应用程序。

如果您想将通知发送到父窗口,那么这可能会让您入门:

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));
于 2009-06-10T10:17:25.923 回答
0

WM_NOTIFY由控件发送给控件的父级,以通知父级发生了事件。通过将其发送到控件本身,您将一事无成。

否则,我真的不明白你想做什么。你能澄清一下吗?

于 2009-06-10T10:28:22.407 回答
0

最好使用 mouse_event API 从驱动程序级别生成鼠标事件,而不是发送假的 WM_MOUSE 消息 http://msdn.microsoft.com/en-us/library/ms646260%28VS.85%29.aspx

于 2010-03-01T22:34:19.357 回答
0

我们可以通过使用以下函数来使用鼠标单击模拟:

mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTDOWN, X, Y,0,0);
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTUP, X, Y,0,0);
于 2010-12-26T16:45:27.173 回答