WM_PAINT aufrufen



  • Folgendes problem:

    Es soll ein bitmap in eindem Fenster dargestellt werden,
    dieses bitmap soll sich auf tastendrück um ein pixel nach unten verschieben,
    was auch im grunde alles kein problem ist, also, wenn WM_KEYDOWN kommt, vird
    der virtual - keycode abgefragt und die x, bzw. y daten eingestellt... das bitmap wird in WM_PAINT gemalt...

    Jedoch wird nachem x und y eingestellt sind natürlich nicht WM_PAINT aufgerufen...
    Ich konnte es weder mit PostMessage nch mit SendMessage aufrufen.
    Es ging natürlich mit ShowWindow(hWnd, SW_HIDE); ShowWindow(hWnd, SW_SHOW);,
    wobei diese Methode sehr unpraktisch ist, da der bildschirm flackert und das
    Programm erheblich verlangsamt wird...

    Danke für alle Antworten

    MFG -[NULL]-

    PS.:
    mit UpdateWindow gings auch nicht



  • WM_PAINT sollte niemals von der Anwendung selbst gesendet werden (dafür ist laut Doku Windows zuständig). Für dein Problem ist InvalidateRect() geeignet. Mit InvalidateRect() kannst du entweder das ganze Fenster oder nur einen Teil davon für ungültig erklären. Wenn du danach noch UpdateWindow() aufrufst, zwingst du Windows dazu eine WM_PAINT-Nachricht zu generieren und diese an dein Fenster zu senden. Wenn du das nicht machst, dann wird eine WM_PAINT-Nachricht erst dann generiert wenn keine (od. keine wichtigen) Nachrichten mehr in der Nachrichtenschleife des Fensters vorhanden sind.

    Hoffe, dass diese Informationen richtig sind; habe nämlich schon lange nichts mehr mit Win-API gemacht 😉



  • Danke, das man windows dazu bringen muss selbst die nachricht zu schicken
    dachte ich mir schon, ich wusste nur nicht wie 😉

    Ich kann nur sagen, dieses Forum ist Gold wert 🙂

    MFG -[NULL]-



  • Don't make it a habit 😃


Anmelden zum Antworten