Problem mit SendMessage (WM_SETTEXT) - Text ändert sich erst nach minimieren und maximieren.
-
Hallo,
ich habe eine Applikation mit einem Frame und darin einem Label. Das Label möchte ich verändern, das dazugehörige Handle habe ich herausfinden können. Das Problem ist nun, wenn ich irgendetwas mit dem Label anstellen möchte (z.B. den Text mit WM_SETTEXT ändern), dann muss ich erst die Anwendung minimieren und wieder maximieren, damit sich das ganze aktualisiert. Woran kann so etwas liegen? Wie kann ich dieses Problem umgehen?
Vielen Dank
-
Offensichtlich hast du es nicht verstaden, WM_SETTEXT richtig anzuwenden. Auf Ratespiele haben wir hier aber keine Lust.
-
UpdateWindow
-
^^ schrieb:
UpdateWindow
Das behebt nicht die Ursache, nämlich seinen fehlerhaften Code.

-
Dipl.Inf.Student schrieb:
Offensichtlich hast du es nicht verstaden, WM_SETTEXT richtig anzuwenden. Auf Ratespiele haben wir hier aber keine Lust.
Was kann man da schon falsch machen?
SendMessage(FindWindowEx(Eltern, NULL, Klasse, Titel), WM_SETTEXT, (WPARAM) NULL, (LPARAM) "Komm mal runter von deinem hohen Ross, thx.");^^ schrieb:
UpdateWindow
Danke, das scheints zu sein! Muss ich das auf das Label, Frame oder das ganze Window anwenden?
-
Dein FindWindow z.B. Wir haben hier keine Glaskugeln, wie schon gesagt. Auf jeden Fall ist UpdateWindow nicht notwendig.
-
Dipl.Inf.Student schrieb:
^^ schrieb:
UpdateWindow
Das behebt nicht die Ursache, nämlich seinen fehlerhaften Code.

Ich denke der Fehler ist eher in dem Programm das er modifizieren will.
-
Nö, er schickt WM_SETTEXT an das Parent, nicht an das Control, also hat er es nicht verstanden.
-
Dipl.Inf.Student schrieb:
Nö, er schickt WM_SETTEXT an das Parent
Das stimmt doch gar nicht

^^ schrieb:
Ich denke der Fehler ist eher in dem Programm das er modifizieren will.
Denke ich auch, denn bei anderen Fenstern klappts auch ohne UpdateWindow etc. :p
-
Vorweg: Dein Code ist in gewisser Weise etwas riskant/unsicher: Stichwort: "Unicode"... Du schickst immer ANSI-Text... .
Also normalerweise sollte durch ein WM_SETTEXT der Text automatisch neu gezeichnet werden. Daher kann man vermuten, dass das "Zielprogramm" Mist baut, bzw. darauf nicht vorbereitet ist. Wenn ein InvalidateRect ausreicht, nimm das statt UpdateWindow.
-
Cool, das funktioniert auch
