Maison > développement back-end > C++ > Comment puis-je suspendre et reprendre efficacement la repeinture de RichTextBox pour la mise en évidence de la syntaxe en direct ?

Comment puis-je suspendre et reprendre efficacement la repeinture de RichTextBox pour la mise en évidence de la syntaxe en direct ?

Barbara Streisand
Libérer: 2025-01-05 13:42:43
original
614 Les gens l'ont consulté

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

Suspendre le repaint dans RichTextBox pour la mise en évidence de la syntaxe en direct

Pour mettre en évidence efficacement les mots-clés dans une RichTextBox en temps réel, il est idéal de désactiver le contrôle automatique repeindre. Bien que la méthode de remplacement WndProc le permette, elle ne convient pas à une fonction externe qui prend une RichTextBox.

Heureusement, il existe une solution de contournement qui exploite l'API SendMessage pour contrôler directement la repeinture automatique :

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

private const int WM_SETREDRAW = 0x0b;
Copier après la connexion

En appelant SendMessage avec wp défini sur 0, la repeinture automatique est désactivée. À l'inverse, définir wp sur 1 le réactive.

Utilisation :

  1. Commencer à repeindre la suspension : SendMessage(richTextBoxHandle, WM_SETREDRAW, (IntPtr)0, IntPtr.Zero);
  2. Effectuer des mises à jour de texte et formatage.
  3. Reprendre la repeinture : SendMessage(richTextBoxHandle, WM_SETREDRAW, (IntPtr)1, IntPtr.Zero);
  4. Invalider le contrôle pour déclencher une repeinture immédiate : richTextBoxHandle.Invalidate();

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal