Edit-Feld beim anklicken leeren
-
Und zwar möchte ich ein Edit-Feld mit etwas beschriften (z.B. "Hier Wert eintragen"). Sobald der Benutzer dann in das Feld wechselt, soll der voreingestellte String gelöscht werden.
Ich hatte es mit einem ButtonDown-Callback versucht, der wird aber nur ausgelöst, wenn man den Rand oder eine inaktive Edit-Box anklickt. Wenn man den Text in der Edit-Box anklickt, löst der Callback nicht aus und der Text bleibt einfach stehen.
Gibt es denn eine Möglichkeit, das, was ich will, umzusetzen? Gerne auch universell, dass der Text auch gelöscht wird, wenn ich per Tab in das Feld wechsle.
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
siedlerkiller2.0 schrieb:
Gerne auch universell, dass der Text auch gelöscht wird, wenn ich per Tab in das Feld wechsle.
Vielleicht auf WM_SETFOCUS reagieren?
-
Auf EN_SETFOCUS reagieren.
-
Könntest Du knapp den Unterschied erklären? Ich nehme an, auf EN_SETFOCUS zu reagieren, ist besser, aber warum?
-
WM_SETFOCUS wird an das Edit Control gesendet. Du müsstest also das Edit-Control erst subclassen um darauf reagieren zu können. Netterweise sendet aber das Control selbst per WM_COMMAND ein EN_SETFOCUS an das Parent wenn es selbst WM_SETFOCUS bekommt.
Man kann es eben einfach im Parent / DialogProc behandeln.
-
Okay, das war mir bekannt. Wenn man also ein Framework benutzt, das einem eine einfache Möglichkeit bietet, die Nachrichten für Controls direkt dort zu bearbeiten, ist es dann wohl Geschmackssache ...
Danke schön.
-
Belli schrieb:
Okay, das war mir bekannt. Wenn man also ein Framework benutzt, das einem eine einfache Möglichkeit bietet, die Nachrichten für Controls direkt dort zu bearbeiten, ist es dann wohl Geschmackssache ...
Aber auch dann müsstest Du erst eine neue Klasse schreiben...
Einen Handler einfügen ist wohl oft genug schneller und übersichtlicher. Wenn es natürlich mehrere Felder gibt, die sich so verhalten sollen, dann könnte eine Klasse natürlich Sinn machen.