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