发送双击到列表视图(c ++,而不是.net!)

时间:2009-06-10 10:13:35

标签: c++ listview click sendmessage postmessage

我想发送双击到列表视图。从我在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 个答案:

答案 0 :(得分: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));

答案 1 :(得分:0)

WM_NOTIFY由控件发送给控件的父级,以通知父级已发生事件。您将通过将其发送到控件本身来完成任何事情。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我们可以使用以下功能使用鼠标点击模拟:

mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTDOWN, X, Y,0,0);
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTUP, X, Y,0,0);