2009-06-10 2 views
1

더블 클릭을리스트 뷰로 보내고 싶습니다. 내가 msdn에서 읽었던 것에서 나는 WM_NOTIFY 메시지와 NM_DBLCLK로 무엇인가를 보내야 할 것 같습니다. 그러나 나는 그것을 실제로 구현하는 것을 정말로 잘 모른다. 나는 전에 sendMessage 첨부와 함께 일했지만 MSDN 그래서 구조체 등을 기입하는 방법이 명확하지 않다 :더블 클릭으로리스트 뷰 보내기 (C++, not .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

답변

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)); 
+0

메시지를 들어 한 번의 클릭은 두 번 클릭 한 것과 정확히 같습니다 (NM_LCLK). 나는 요점을 얻지 못한다. 물론 WM_LBUTTONDBLCLK를 할 수는 있지만 클릭 한 항목을 화면에 표시해야합니다. 가능한 경우이를 피하고 싶습니다. –

+0

알림 메시지가 목록보기에서 상위 컨트롤로 전송됩니다. 목록보기로 전송할 필요는 없습니다. 부모에게 보내시겠습니까? –

+0

나는 당신의 요점을 얻는다 고 생각합니다. 나는 그것이 가능할 것이라고 생각했다. 감사합니다 –

0

WM_NOTIFY는 이벤트가 발생했음을 부모를 알리기 위해 제어에 의해 컨트롤의 부모에게 전송됩니다. 컨트롤 자체에 보내면 아무 것도 수행 할 수 없습니다.

그렇지 않으면 내가하는 일을 정말로 이해하지 못합니다. 좀 더 명확히 해 주시겠습니까?

+0

나는 두 번 클릭하면 창이 열리는 다른 프로그램에서 listview 있습니다. 그래서 목록보기를 두 번 클릭해야합니다. –

+0

알겠습니다. 이 경우 1800 INFORMATION은 이미 솔루션을 제공합니다. – avakar

0
우리는 다음과 같은 기능을 사용하여 시뮬레이션을 마우스 클릭 사용할 수 있습니다

:

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