2010-11-23 4 views
0

Ich erstelle eine benutzerdefinierte Soft-Eingabe-Panel und möchte die Position des Caret finden. Ich könnte dann das SIP aus dem Weg räumen, wenn es die Position abdeckt, an der Text eingegeben wird.Suchen Sie die Bildschirmposition des Caret in Windows CE. (äquivalent zu GetGUIThreadInfo?)

Es klingt wie in Windows die Art, dies zu tun wäre mit GetGUIThreadInfo(). Es scheint jedoch, dass die API in Windows CE (speziell CE 6.0 R3) nicht unterstützt wird.

Gibt es eine alternative Methode, die gleiche Information zu finden? Eine Möglichkeit, das aktive Fenster zu bestimmen und wo Text eingegeben wird?

Danke!

Antwort

0

Das Caret sollte nur in dem Fenster angezeigt werden, das den Fokus hat und aktiv ist. Wie sei es so etwas wie:

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

Wenn Sie weitere Informationen (wie ein bestimmtes untergeordnetes Fenster) benötigen, können Sie den Punkt durch GetCaretPos() in Bildschirmkoordinaten zurück umwandeln könnten, dann WindowFromPoint() verwenden zurück zu einem bestimmten (Kind) Fenster zu konvertieren Griff.

+0

Corey, das war vor einer Weile, dass ich damit zu tun hatte, aber IIRC der Grund, warum ich nicht mit einer Lösung gehen konnte wie Sie vorgeschlagen war, weil auf Windows-CE 6.0 GetCaretPos fehlschlägt, wenn Sie nicht im selben Prozess wie die sind Fenster, das den Caret besitzt. Da ich versuchte, auf diese Informationen von einem SIP zuzugreifen, konnte ich diese Methode nicht verwenden, da ich versuchte, die Position des Carets in einem anderen Prozess zu finden. – eoldre