RichEdit - Interfaceupdating verhindern



  • Hallo,

    Bei der OLE-Version von RichEdit gibt es eine Funktion die "Freeze" heißt (im ITextDocument Interface). Diese bewirkt, dass das Control daran gehindert wird seine Oberfläche neu zu zeichnen. So wird das Flackern vermieden, und die Performance erhöht, wenn man z.b. eine Reihe von Operationen am Control durchführt (Daten reinstreamen, Fonts selektieren etc.)..

    Leider habe ich nicht's Äquivalentes in der Nicht-OLE Version gefunden. Deshalb würde mich ein Workaround interessieren...

    Friede!
    Aziz



  • Eine Möglichkeit, die ich heute gefunden habe ist folgende:

    //...
      // neuzeichnen deaktivieren
      ::SendMessage(hwndREdit, WM_SETREDRAW, FALSE, 0);
      /*
        aufwendige Operationen durchführen
      */
      // neuzeichnen aktivieren
      ::SendMessage(hwndREdit, WM_SETREDRAW, TRUE, 0);
      // den control dazu zwingen seinen client-bereich neuzuzeichnen
      ::InvalidateRect(hwndREdit, NULL, FALSE);
    //...
    

Anmelden zum Antworten