Probleme mit Grafikdarstellung



  • in einem konkreten Fall reicht

    Invalidate();
    UpdateWindow();
    

    nicht aus. Die dialogbasierende Anwendung bleibt weiß.

    Nur mit

    Invalidate();
    UpdateWindow();
    OnPaint();
    

    klappt es. Was muss ich unternehmen, dass dies "normal" wird?


  • Mod

    Dann hast Du einen anderen Fehler. OnPaint sollte niemals driekt aufgerufen werden.

    Invalidate und UpdateWindow (oder zusammen RedrawWindow) muss genügen.



  • Ich Tip mal er ist in einem Handler von einem Button o.ä. und versucht was in seinem Windows aus zu geben und das läuft halt nicht, deswegen die Holzhammermethode.

    Wenn das so ist dann verfrachte deinen Code in einen Thread und übermittel die "Daten" mit Post- oder Send-Message. Dann sollte sich dein Problem von selbst erledigen.



  • Hi,

    die Methode OnPaint() ist im Header/Code nicht korrekt implementiert/Überschrieben.

    Jedes Invalidate ruft die Methode auf.


  • Mod

    Achromat schrieb:

    die Methode OnPaint() ist im Header/Code nicht korrekt implementiert/Überschrieben.

    Jedes Invalidate ruft die Methode auf.

    Nein! Ein Invalidate ruft diese Methode nicht auf. Die setzt nur ein Flag für die Region, die ein Update braucht.
    Erst UpdateWindow oderr RedrawWindw, oder eben die Messageloop erzeugt die WM_PAINT Nachricht.



  • Jedes Invalidate() löst ein WM_PAINT aus.

    Und somit wird für jedes Invalidate einmal OnPaint ausgelößt

    Wo ist das Problem ? Und wenn OnPaint nicht korrekt
    definiert ist, passiert auch Augenschainlich nichts.


Log in to reply