Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 11.10.2008, 19:41 Titel: Fenster neu zeichen lassen |
|
|
Hi
Wie kann ich mit API-Befehlen soetwas wie bei VB die "Refresh" Funktion bewirken?
Ich habe ein Programm geschrieben womit man die aufschrift von Steuerelementen verändern kann (Get/-SetWindowText). Und wenn ich nun den Text eines Buttons ändere, wird die veränderung erst sichtbar, wenn dieser vom Programm neu gezeichnet wird.
Geht das mit API?
Danke schonmal im vorraus |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 14.10.2008, 09:08 Titel: |
|
|
InvalidateRect (ByVal hwnd As Long, ByRef lpRect As RECT, ByVal bErase As Long) As Long _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 14.10.2008, 11:31 Titel: |
|
|
gibt aber auch glaub ich ne Message dafür... WM_PAINT. Das ist das, was bei VB den Refresh auslöst. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 14.10.2008, 11:45 Titel: |
|
|
Richtig. Aber WM_PAINT kann man nicht per SendMessage verschicken. InvalidateRect macht den Fensterbereich ungültig und löst dadurch die WM_PAINT-Nachricht aus.
Also: Du änderst die Button-Beschriftung (NICHT unter WM_PAINT!), löst mit InvalidateRect eine WM_PAINT aus, danach wird unter WM_PAINT das Fenster samt neu beschriftetem Button neu gezeichnet. _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 14.10.2008, 14:22 Titel: |
|
|
okay, der klassiker, ursache und wirkung verwechselt  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 15.10.2008, 17:03 Titel: |
|
|
Danke
Denn ich habs die ganze Zeit mit WM_PAINT versucht, hat aber nicht geklappt
Wass soll ich den bei lpRect und bei bErase angeben?
Hab schon bei msdn nach geguckt, verstehe es aber nicht msdn hat Folgendes geschrieben: | lpRect
[in] Pointer to a RECT structure that contains the client coordinates of the rectangle to be added to the update region. If this parameter is NULL, the entire client area is added to the update region. |
|
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 15.10.2008, 17:21 Titel: |
|
|
lpRect = RECT = Rechtecht = Die Koordinaten der Fläche, die neu gezeichnet werden soll. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 15.10.2008, 17:28 Titel: |
|
|
Hmm der Text ändert sich trotzdem nicht!
Wenn ich den Text ändere mit SetWindowText ändere und dann mit InvalidateRect das Control neuzeichen lasse, wird der text trotzdem nicht angezeigt. Er wird aber geändert: Wenn ich dann mit GetWindowText den Text lese ist das der neue Text. |
|
Nach oben |
|
 |
|