Fensterinhalt flackert bei Änderung der Größe



  • Moin, Moin...

    Ich habe ein Fenster mit einem rahmenlosen Childfenster und einer Statusleiste:

    +----------------------------------+
    | Titel Fenster #1(Hauptfenster)   |
    +--------------------------------+-+
    |                                | |
    | Anwendungsbereich Fenster #1   | |
    | mit rahmenlosen Childwindow    | |
    |                                | |
    +--------------------------------+-+
    |            Scrollbalken        | |
    +--------------------------------+-+
    |   Statusleiste                   |
    +----------------------------------+
    

    Der Inhalt des Clientfensters wird mit BitBlt() rekonstruiert, wenn WM_PAINT verarbeitet wird. Der Anwendungsbereich des Hauptfensters wird nicht verändert, sondern dient nur der Aufnahme des Childfensters. Nun flackert der Fensterinhalt doch ziemlich, wenn die Größe des Fensters verändert wird. Wie kann ich dieses Flackern vermeiden?

    Die Verarbeitung der Nachrichten:

    WM_SIZE des Hauptfensters:
    1. Statusleiste anpassen
    2. Mit MoveWindow() das Clientfenster der neuen Größe des Anwendungsbereichs
    anpassen.

    WM_SIZE des Clientfensters:
    1. Scrollbalken anzeigen oder verstecken

    WM_PAINT des Clientfensters:
    1. Mit BitBlt() Inhalt rekonstruieren

    Danke im voraus...



  • Hi. Hast du CS_HREDRAW oder CS_VREDRAW bei der Fensterklasse angegeben? Solltest du weglassen, damit sich das Hauptfenster bei Größenänderungen nicht neuzeichnet.
    Ansonsten könnte noch die Angabe von WS_CLIPCHILDREN bei den Styles des Hauptfensters helfen.



  • @Pudding:

    Danke für den Tip. Es lag tatsächlich an CS_HREDRAW und CS_VREDRAW.

    Ciao...


Anmelden zum Antworten