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

あなたは間違った道を進んでいるのではないかと思います。おそらく、ダブルクリックメッセージを送信する最良の方法は、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(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTDOWN, X, Y,0,0);
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTUP, X, Y,0,0);
于 2010-12-26T16:45:27.173 に答える
0

偽の WM_MOUSE メッセージhttp://msdn.microsoft.com/en-us/library/ms646260%28VS.85%29.aspxを送信する代わりに、mouse_event API を使用してドライバー レベルからマウス イベントを生成することをお勧めします 。

于 2010-03-01T22:34:19.357 に答える