我认为这不能自动完成,因为Windows的富文本编辑控件不提供此功能。你有两个选择:
进行了一个快速的测试应用程序,我能够修改这些颜色,但是需要仔细考虑才能使其按照您的预期工作。
首先,您可能需要更改对话框资源,将控件标识为旧的RICHEDIT。在Visual Studio 2010中,我的对话框生成的.rc文件将控件标识为“RichEditCtrl20A”,当控件被标识为这样时,我无法对选择颜色进行任何重大更改。将控件类型更改为“RICHEDIT”允许我对选择颜色进行更改,而不会感觉到任何功能上的损失。您必须在文本编辑器中修改.rc文件,找到您的RichEdit控件实例并进行修改。
完成后,您可以使用CRichEditCtrl::SetSelectionCharFormat
函数修改选择颜色(实际上,还有更多的选择属性)。
我进行的简单测试是创建一个新的基于对话框的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);
}
一旦安装了此处理程序,单击对话框中的“确定”按钮将填充富文本控件,选择前17个字符并更改选择突出显示颜色。
您可以在MSDN上找到有关此函数的文档。
虽然我没有完全理解你的问题,但我猜测你想要改变所选文本的颜色。以下链接是基于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
请告诉我我的回答是否对您有帮助。
编辑