Heim >Backend-Entwicklung >C++ >Wie kann ich das Neuzeichnen von RichTextBox für die Live-Syntaxhervorhebung effizient anhalten und fortsetzen?

Wie kann ich das Neuzeichnen von RichTextBox für die Live-Syntaxhervorhebung effizient anhalten und fortsetzen?

Barbara Streisand
Barbara StreisandOriginal
2025-01-05 13:42:43571Durchsuche

How Can I Efficiently Suspend and Resume RichTextBox Repainting for Live Syntax Highlighting?

Repaint in RichTextBox für Live-Syntaxhervorhebung anhalten

Um Schlüsselwörter in einer RichTextBox effizient in Echtzeit hervorzuheben, ist es ideal, die Automatik des Steuerelements zu deaktivieren Neuanstrich. Die WndProc-Override-Methode ermöglicht dies zwar, ist jedoch nicht für eine externe Funktion geeignet, die eine RichTextBox benötigt.

Glücklicherweise gibt es eine Problemumgehung, die die SendMessage-API nutzt, um das automatische Neuzeichnen direkt zu steuern:

[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);

private const int WM_SETREDRAW = 0x0b;

Durch den Aufruf von SendMessage mit wp auf 0 gesetzt wird das automatische Neuzeichnen deaktiviert. Umgekehrt wird wp durch Setzen auf 1 wieder aktiviert.

Verwendung:

  1. Begin repainting suspend: SendMessage(richTextBoxHandle, WM_SETREDRAW, (IntPtr)0, IntPtr.Zero);
  2. Führen Sie Textaktualisierungen durch und Formatierung.
  3. Neuzeichnen fortsetzen: SendMessage(richTextBoxHandle, WM_SETREDRAW, (IntPtr)1, IntPtr.Zero);
  4. Das Steuerelement ungültig machen, um ein sofortiges Neuzeichnen auszulösen: richTextBoxHandle.Invalidate();

Das obige ist der detaillierte Inhalt vonWie kann ich das Neuzeichnen von RichTextBox für die Live-Syntaxhervorhebung effizient anhalten und fortsetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn