簡體   English   中英

如何更改 RichEdit 控件中的選擇顏色?

[英]How to change selection color in RichEdit control?

基本上,我想在彩色文本上方的地方更改標准 RichEdit 選擇顏色。

我正在 RichEdit 控件(如黃色標記)中實現“突出顯示”function。 現在,當我在所選文本上應用高亮顯示時,視覺上沒有任何變化,因為選擇保持在原位並且它覆蓋了字符顏色。 這很糟糕,因為用戶應該得到一些視覺反饋,表明已應用了突出顯示。

現在我已經妥協了——在執行“高亮”命令后,我只是完全清除了選擇。 但是,當它在彩色文本上方時,選擇顏色不同是理想的。

我怎樣才能做到這一點? 提前致謝!

文本選擇的顏色設置與 RichEdit 2.0 和更高版本中的系統選擇顏色硬連線 在 RichEdit 1.0 中,選擇顏色是通過反轉背景顏色生成的,所以你有點控制權,但是如果你降級到 1.0,你會失去很多功能。

一個解決方法是在 GetSysColor API 上安裝一個流程范圍的Detour 掛鈎

WPF4 版本的 RichTextBox 中有一個 SelectionBrush 屬性,可用於更改選擇外觀。 不確定您的項目要求是否允許您在對話框上托管 WPF 控件。

我不認為這可以自動完成,因為來自 Windows 的富編輯控件不提供此類功能。 您有 2 個選項:

  • 忽略問題。 你想要的東西是不可能的,所以不要想要它。
  • 制作自己的富編輯控件(只是個玩笑,但可以做到)。 或者使用其他的。 也許閃爍控件具有此功能?

一個快速測試應用程序,我能夠修改這些 colors,但是需要仔細考慮才能使其按預期工作。

首先,您可能必須更改對話框資源以將控件標識為較舊的 RICHEDIT。 在 Visual Studio 2010 中,在我的對話框中生成的 .rc 文件將控件標識為"RichEditCtrl20A ,當控件被標識為此類時,我無法對選擇顏色進行任何重大更改。將控件類型更改為"RICHEDIT"允許我對選擇顏色進行更改,而不會感覺到功能損失。您必須在文本編輯器中修改 .rc 文件,找到您的 RichEdit 控件實例並進行修改。

完成后,您可以使用CRichEditCtrl::SetSelectionCharFormat function 修改選擇顏色(實際上是更多的選擇屬性)。

我所做的簡單測試是創建一個新的基於對話框的 MFC 應用程序,向其添加富編輯控件,如上所述修改 RC 文件,並添加以下 OnOK() 處理程序:

void CTestMFCDlg::OnBnClickedOk()
{
   m_rec.SetWindowText("This is a test of stuff");

   m_rec.SetFocus();

   CHARRANGE cr;
   cr.cpMin = 0;
   cr.cpMax = 16;

   m_rec.SetSel(cr);

   CHARFORMAT2A cf;
   m_rec.GetSelectionCharFormat(cf);

   cf.dwEffects = 0;
   cf.dwMask = CFM_BACKCOLOR | CFM_COLOR | CFM_FACE;
   cf.crBackColor = 0;
   cf.crTextColor = RGB(15, 15, 255);
   strcpy(cf.szFaceName, "Times New Roman");

   m_rec.SetSelectionCharFormat(cf);
}

一旦這個處理程序就位,在對話框中按 OK 將填充富編輯控件,select 前 17 個字符並更改選擇突出顯示顏色。

您可以在 MSDN 上找到有關此 function 的文檔:

現在我已經妥協了——在執行“highlight”命令后,我完全清除了選擇

我只是想補充一點,當您突出顯示某種顏色/顏色時,即使是 Microsoft Word 也會取消選擇文本。 從玩起來,這感覺是最直觀的,因為通常你不想做任何其他事情,你會立即取消選擇文本。

雖然我無法正確理解您的問題,但我猜您想更改所選文本的顏色。 以下鏈接在 MFC 中,因此您需要將其更改為 Windows SDK 代碼,但它會幫助您入門。

http://social.msdn.microsoft.com/Forums/en-US/vcmfcatl/thread/860b0295-9144-4af6-9ffc-42c2b39a3f50/

http://www.go4expert.com/forums/showthread.php?t=320

如果我的回答對您有幫助,請告訴我。

編輯

Rich Edit Control 中的顏色變化

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM