2009-06-10 14 views
1

Ich möchte einen Doppelklick auf eine Listview senden. Von dem, was ich auf msdn gelesen habe, scheint es, dass ich eine WM_NOTIFY-Nachricht und etwas mit NM_DBLCLK senden muss. Aber ich verstehe nicht wirklich gut, um es umzusetzen. Ich habe mit Sendmessage gearbeitet, bevor aber MSDN ist nicht so klar, wie die Strukturen zu füllen und so:Senden Sie einen Doppelklick an eine Listview (C++, nicht. NET!)

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

Antwort

2

Ich vermute, Sie gehen in die falsche Spur zu kommen. Die beste Möglichkeit, eine Doppelklick-Nachricht zu senden, besteht darin, zwei einzelne Klicks hintereinander zu senden. Dies hat die besten Chancen zu arbeiten und nicht überraschend die App mit einer Doppelklick-Benachrichtigung aus heiterem Himmel.

Wenn Sie die Meldung an das übergeordnete Fenster schicken, dann erhalten diese könnten Sie begann:

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

Die Meldung für Einzelklick ist genauso wie der Doppelklick, NM_LCLK. Ich verstehe den Punkt nicht. Natürlich kann ich eine WM_LBUTTONDBLCLK machen, aber damit ich das verwenden kann, muss ich das angeklickte Objekt auf dem Bildschirm sehen, was ich möglichst vermeiden möchte. –

+0

Die Benachrichtigungsnachricht wird von der Listenansicht an das übergeordnete Steuerelement gesendet. Es hat keinen Sinn, es an die Listenansicht zu senden. Möchten Sie es an die Eltern senden? –

+0

Ich denke, ich verstehe Ihren Standpunkt. Ich dachte, es wäre so möglich. Danke –

0

WM_NOTIFY wird an die Eltern Steuerung gesendet durch die Steuer die Eltern zu informieren, dass ein Ereignis aufgetreten ist. Sie werden nichts erreichen, indem Sie es an das Steuerelement selbst senden.

Ansonsten verstehe ich nicht wirklich, was Sie versuchen zu tun. Können Sie bitte klarstellen?

+0

Ich habe eine Listenansicht auf ein anderes Programm, das bei Doppelklick ein Fenster öffnet. Deshalb muss ich auf die Listenansicht doppelklicken. –

+0

Ich sehe. In diesem Fall hat 1800 INFORMATION Ihnen bereits eine Lösung geliefert. – avakar

0

Wir können simulations Mausklick durch folgende Funktionen:

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