> 백엔드 개발 > C++ > 실시간 구문 강조를 위해 RichTextBox에서 다시 그리기를 비활성화하려면 어떻게 해야 합니까?

실시간 구문 강조를 위해 RichTextBox에서 다시 그리기를 비활성화하려면 어떻게 해야 합니까?

Barbara Streisand
풀어 주다: 2025-01-05 15:06:43
원래의
756명이 탐색했습니다.

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

RichTextBox에서 실시간 구문 강조를 위한 다시 그리기 비활성화

사용자가 입력하는 동안 RichTextBox에서 키워드와 나쁜 단어를 강조 표시해야 합니다. 하지만 지속적인 재도색으로 인한 과도한 깜박임이 문제입니다. 그러나 "WndProc" 함수를 재정의하고 다시 그리기 메시지를 가로채는 표준 방법에는 서브클래싱이 필요하며 이는 실현 가능하지 않습니다.

다행히도 RichTextBox 클래스의 기능을 직접 확장하여 이 문제를 해결할 수 있습니다. 방법은 다음과 같습니다.

  1. 사용자 정의 RichTextBox 클래스 만들기:

    • 프로젝트에 "MyRichTextBox"라는 새 클래스를 추가합니다.
    • 다음 코드를 복사하여 클래스에 붙여넣으세요. 정의:
    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;
    }       
    로그인 후 복사
  2. 사용자 정의 컨트롤 사용:

    • 도구 상자에 "MyRichTextBox" 컨트롤을 추가합니다. "사용자 정의 컨트롤" 섹션.
    • 컨트롤을 양식에 끌어다 놓고 일반 RichTextBox처럼 사용하세요.
  3. 다시 그리기 비활성화:

    • 내에서 텍스트 편집이나 서식 지정을 수행하기 전에 사용자 정의 RichTextBox에서 "BeginUpdate"를 호출합니다. 방법:
    myRichTextBox1.BeginUpdate();
    로그인 후 복사
  4. 다시 그리기 활성화:

    • 텍스트 편집 및 서식 지정을 완료한 후 "EndUpdate"를 호출하세요. " 방법:
    myRichTextBox1.EndUpdate();
    로그인 후 복사

이제 사용자 정의 RichTextBox 컨트롤을 사용하면 자동 다시 그리기로 인한 혼란스러운 깜박임 없이 실시간으로 키워드와 나쁜 단어를 강조 표시할 수 있습니다.

위 내용은 실시간 구문 강조를 위해 RichTextBox에서 다시 그리기를 비활성화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿