2010-11-23 3 views
0

커스텀 소프트 입력 패널을 만들고 있는데 캐럿의 위치를 ​​찾고 싶습니다. 텍스트가 입력되는 위치를 덮고 있다면 SIP를 방해 할 수 있습니다.Windows CE에서 캐럿의 화면 위치를 찾습니다. (Equiv to GetGUIThreadInfo?)

Windows에서이 작업을 수행하는 방법은 GetGUIThreadInfo()를 사용하는 것과 같습니다. 그러나 Windows CE (특히 CE 6.0 R3)에서는 API가 지원되지 않는 것으로 보입니다.

이 동일한 정보를 찾는 다른 방법이 있습니까? 활성 창을 결정하는 방법과 텍스트를 입력 할 위치를 결정하는 방법은 무엇입니까?

감사합니다.

답변

0

캐럿은 포커스가 있고 활성화 된 창에만 표시되어야합니다. 어떻게 같은 약 :

POINT cp; 
GetCaretPos(&cp); // in client coordinates 
HWND hActive=GetActiveWindow(); 

당신이 (특정 자식 창 등) 자세한 내용은 특정 다시 변환 WindowFromPoint()를 사용 후, 화면의 좌표로 GetCaretPos()에 의해 반환 된 점을 변환 할 수 있습니다를 필요한 경우 (자식) 창 핸들.

+0

코리, 이건 좀 전에 다루었지만 IIRC는 내가 제안한 솔루션으로 갈 수 없었던 이유는 Windows CE 6.0 GetCaretPos에서와 같은 프로세스에 있지 않으면 실패하기 때문이라고 제안했습니다. 캐럿을 소유 한 창. SIP에서이 정보에 액세스하려고했기 때문에 다른 프로세스에서 캐럿의 위치를 ​​찾으려고했기 때문에이 방법을 사용할 수 없었습니다. – eoldre

관련 문제