Maison > développement back-end > C++ > Comment puis-je désactiver la repeinture dans une RichTextBox pour la mise en évidence de la syntaxe en temps réel ?

Comment puis-je désactiver la repeinture dans une RichTextBox pour la mise en évidence de la syntaxe en temps réel ?

Barbara Streisand
Libérer: 2025-01-05 15:06:43
original
799 Les gens l'ont consulté

How Can I Disable Repainting in a RichTextBox for Real-Time Syntax Highlighting?

Désactivation de Repaint pour la mise en évidence de la syntaxe en temps réel dans RichTextBox

Vous devez mettre en surbrillance les mots-clés et les gros mots dans une RichTextBox pendant que l'utilisateur tape, mais le scintillement excessif provoqué par une repeinture constante est préoccupant. Cependant, la méthode standard pour remplacer la fonction "WndProc" et intercepter le message de repaint nécessite un sous-classement, ce qui n'est pas réalisable.

Heureusement, vous pouvez résoudre ce problème en étendant vous-même les fonctionnalités de la classe RichTextBox. Voici comment :

  1. Créez une classe RichTextBox personnalisée :

    • Ajoutez une nouvelle classe nommée "MyRichTextBox" à votre projet.
    • Copiez et collez le code suivant dans la classe définition :
    using System;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    
    class MyRichTextBox : RichTextBox {
        public void BeginUpdate() {
            SendMessage(this.Handle, WM_SETREDRAW, (IntPtr)0, IntPtr.Zero);
        }
        public void EndUpdate() {
            SendMessage(this.Handle, WM_SETREDRAW, (IntPtr)1, IntPtr.Zero); 
            this.Invalidate();
        }
        [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
  2. Utilisez le contrôle personnalisé :

    • Ajoutez le contrôle "MyRichTextBox" à votre boîte à outils à partir de la section "Contrôles personnalisés".
    • Faites glisser et déposez le contrôle sur votre formulaire et utilisez-le comme vous le feriez pour un contrôle normal. RichTextBox.
  3. Désactiver la repeinture :

    • Avant d'effectuer une modification ou un formatage de texte dans la RichTextBox personnalisée, appelez le " Commencer la mise à jour" méthode :
    myRichTextBox1.BeginUpdate();
    Copier après la connexion
  4. Activer la repeinture :

    • Après avoir terminé l'édition et le formatage de votre texte, appelez "EndUpdate " méthode :
    myRichTextBox1.EndUpdate();
    Copier après la connexion

En utilisant Grâce au contrôle RichTextBox personnalisé, vous pouvez désormais mettre en évidence des mots-clés et des gros mots en temps réel sans le scintillement gênant provoqué par la repeinture automatique.

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