Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menggantung dan Menyambung semula Pengecatan Semula RichTextBox dengan Cekap untuk Penyerlahan Sintaks Langsung?

Bagaimanakah Saya Boleh Menggantung dan Menyambung semula Pengecatan Semula RichTextBox dengan Cekap untuk Penyerlahan Sintaks Langsung?

Barbara Streisand
Lepaskan: 2025-01-05 13:42:43
asal
561 orang telah melayarinya

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

Menggantung Pengecatan Semula dalam RichTextBox untuk Penyerlahan Sintaks Langsung

Untuk menyerlahkan kata kunci dengan cekap dalam RichTextBox dalam masa nyata, adalah sesuai untuk melumpuhkan kawalan automatik mengecat semula. Walaupun kaedah override WndProc membenarkan perkara ini, ia tidak sesuai untuk fungsi luaran yang menggunakan RichTextBox.

Nasib baik, terdapat penyelesaian yang memanfaatkan SendMessage API untuk mengawal terus pengecatan semula automatik:

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

private const int WM_SETREDRAW = 0x0b;
Salin selepas log masuk

Dengan memanggil SendMessage dengan wp ditetapkan kepada 0, pengecatan semula automatik dilumpuhkan. Sebaliknya, tetapan wp kepada 1 mendayakannya semula.

Penggunaan:

  1. Mulakan pengecatan semula penggantungan: SendMessage(richTextBoxHandle, WM_SETREDRAW, (IntPtr)0, IntPtr.Zero);
  2. Lakukan kemas kini teks dan pemformatan.
  3. Sambung pengecatan semula: SendMessage(richTextBoxHandle, WM_SETREDRAW, (IntPtr)1, IntPtr.Zero);
  4. Batalkan kawalan untuk mencetuskan pengecatan semula serta-merta: richTextBoxHandle();

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggantung dan Menyambung semula Pengecatan Semula RichTextBox dengan Cekap untuk Penyerlahan Sintaks Langsung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan