Приложение для быстрого тестирования, и мне удалось изменить эти цвета, однако для того, чтобы оно работало так, как вы ожидаете, требуется некоторое тщательное рассмотрение.
Во-первых, вам, вероятно, придется изменить свой диалоговый ресурс, чтобы определитьконтролировать, как старший RICHEDIT.В Visual Studio 2010 для файла .rc, сгенерированного в моем диалоговом окне, элемент управления был идентифицирован как "RichEditCtrl20A
, и когда элемент управления был идентифицирован как таковой, я не смог внести существенных изменений в цвет выделения.Изменение типа элемента управления на "RICHEDIT"
позволило мне внести изменения в выделение цвета без видимой потери функциональности.Вы должны изменить файл .rc в текстовом редакторе, найти свой экземпляр элемента управления RichEdit и внести изменения.
Как только это будет сделано, вы можете изменить цвет выделения (фактически, значительно больше атрибутов выделения) с помощьюCRichEditCtrl::SetSelectionCharFormat
function.
Простым тестом, который я сделал, было создание нового приложения MFC на основе диалога, добавление к нему элемента управления rich edit, изменение файла 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 в диалоговом окне заполнит элемент управления rich edit, выделит первые 17 символов и изменит цвет выделения выделения.
Вы можете найтидокументация по этой функции в MSDN: