2009-04-09 6 views
0

토글 메커니즘을 사용하여 setfocus 및 setcapture를 호출 할 수 있으며 OnLButtonDown에서 메시지가 전달되지 않지만 클릭 한 순간에 실패하는 것으로 확인됩니다. 캡쳐와 포커스가있는 윈도우가 포기하지 않도록 할 수있는 방법이 있습니까?포커스 및 특정 윈도우로 캡쳐

+0

당신은 그냥하지 말아야합니다 .... –

+0

이 특별한 경우에는 색상 샘플러입니다. –

답변

2

색상 선택기의 경우 화면의 어느 곳에서나 색상을 얻으려면 this article을 읽어보십시오.

This one은 더 완벽한 유틸리티입니다. 원하는 것을 해보십시오. 차이점은 클릭을 멈추려는 키 조합 [Alt + Ctrl + P]에서 중지를 캡처하는 것입니다. 두 번째 링크에서

다음 함수 호출 당신을 위해 도움이 될 것입니다 :

SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); 
RegisterHotKey(m_hWnd, 0x1FEB, MOD_CONTROL | MOD_ALT, 0x50); 

첫 번째는 창 활성 유지하고, 두 번째 레지스터 Alt + Ctrl 키 + P (그리고이 때는를 누를 때 윈도우는 WM_HOTKEY 이벤트를받습니다. 여기서 WM_HOTKEY 이벤트를 통해 색상 캡쳐를 중단 할 수 있습니다. 안타깝게도 마우스 버튼으로 RegisterHotKey를 사용할 수는 없습니다. 조사 할 내용 SetWindowsHookEx

SetWindowsHookEx를 사용하면 응용 프로그램이 포커스가 없어도 이벤트를 수신 할 수 있습니다. Mouse Procedure과 함께 "WH_MOUSE"후크를 사용하여 SetWindowsHookEx를 호출하십시오.

이 절차에서는 마우스 메시지가 표시되고 마우스가 움직이는 위치에서 캡처를 중지하고 (색상을 잠그기) SetWindowPos를 사용하여 창을 맨 위로 이동합니다. 그런 다음 UnhookWindowsHookEx으로 후크 등록을 취소하십시오.

이것은 당신이 배우는 데 필요한 많은 것들이지만, 나는 당신을 연결시켜 준 모든 MSDN 페이지가 당신을 도울 많은 정보를 가지고있다. 키 조합 대신 두 번째 링크가 당신에게 적합합니다.

희망이 있습니다.