Eingabecursor im Dialog eliminieren
-
Nach vollständig erfolgter Eingabe im Dialog möchte ich den Eingabecursor eliminieren, weil das im Screenshot nach erfolgter Berechnung blöd aussieht. Ein einfaches Sendmessage mit WM_KILLFOCUS bringt das leider nicht. Ist nur reine Optik, hätte dennoch gerne eine Lösung.
-
probier mal HideCaret
-
Danke, es funktioniert.
War ich selbst nicht drauf gekommen!
-
Verwende WM_NEXTDLGCTL um den Fokus auf ein andere Control zu setzen.
Dann verschwindet das Caret von selbst.
http://msdn.microsoft.com/en-us/library/ms645432(VS.85).aspxHideCaret isoliert zu verwenden ist nicht richtig weil Du den internen Zähler für das Caret durcheinander bringst. Einfach mal die Doku lesen:
http://msdn.microsoft.com/en-us/library/ms648403(VS.85).aspx
-
Danke auch an Martin Richter für den weiteren Hinweis.
Da ich weiss, wo ich HideCaret nun setze kann ich problemlos auch wieder ShowCaret setzen. WM_NEXTDLGCTL habe ich noch nicht ausprobiert. Geht das Setzen auch auf ein static-control mit dann zweifachem Aufruf von WM_NEXTDLGCTL, wenn ich die Berechnung bereits nach den ersten 3 edit-controls statt aus vorgesehenen vier starte weil alle erforderlichen Eingaben vollkommen vorliegen? Diesen Fall hatte ich im Auge.
Das ganze ist aber - wie gesagt - nur reine Optik, also Programm-Kosmetik ohne weiteren Belang. Man lernt jedoch gerne dazu!
-
Nur Controls die das vorsehen und können nehmen auch den Focus...
Setz doch den Focus auf den Button der die Berechnung auslöst!
Das passt doch!BTW: Wenn der User jetzt TAB drückt oder die Maus um die Eingaben zu ändern würde das Caret verschwunden bleiben.