2016-06-08 72 views
1

这里的想法很简单,我想,但我似乎无法弄清楚。基本上,我拥有的是一个MFC单一视图应用程序,只有一个富文本编辑控件2.0和一些文本。只要说这个控制说“请点击这里快速前进。”MFC丰富的编辑控件2.0文本颜色

CHARFORMAT cf = { sizeof(cf) }; 
cf.dwEffects = CFM_BOLD; 
cf.dwMask = CFM_BOLD; 
m_pMessageTextBox.SetSel(13, 17); 
m_pMessageTextBox.SetSelectionCharFormat(cf); 

现在这段代码我只是大胆的“这里”这个词,这是我想要的。但除了加粗它之外,我想将整个文本的颜色改为红色。

我只需要看看如何将丰富的编辑控件2.0中的文本转换为不同的颜色。我浏览过stackoverflow和谷歌和很多关于这个文件是从10年前+。

Here是一个最近提出的问题,问我同样的问题,除了他的帖子是一个巨大的代码片段,我真的不在乎。使用

cf.crTextColor = RGB(255,0,0); 

使用

m_pMessageTextBox.SetSelectionCharFormat(cf); 

没有什么变化,我认为在这种情况下,豪言将在同一时间大胆的红色,但它只是停留黑之前,我已经尝试过。

回答

2

好吧,我设法弄清楚了,我的一个条件语句被破坏了,所以我的代码的一部分从未真正读过。对于谁运行到这个问题的人这是我使用:

CHARFORMAT cf = { sizeof(cf) }; 
cf.dwEffects = CFM_BOLD; 
cf.dwMask = CFM_BOLD; 
m_pMessageTextBox.SetSel(13, 17); 
m_pMessageTextBox.SetSelectionCharFormat(cf); 
cf.cbSize = sizeof(cf); 
cf.dwMask = CFM_COLOR; 
cf.dwEffects = 0; 
m_pMessageTextBox.SetSel(0, -1); 
m_pMessageTextBox.SetSelectionCharFormat(cf); 

对于这一点,我还没有机会与它玩,只是还没有,看看我是否可以缩短,但它的工作方式我现在就想要。首先它执行粗体属性并将其应用于文本,然后执行文本颜色属性并将其应用于文本的开始位置和结束位置。

+0

交换操作可能更有意义 - 首先为整个文本着色,然后加粗个别部分。顺便说一句,如果你实际上没有点击它,那么使用“点击这里”文本有什么意义?使用'CFM_LINK'掩码允许启用'CFE_LINK'效果,然后单击时可点击的文本将生成一个'EN_LINK'通知。 –

+0

如果它没有'cf.crTextColor = RGB(255,0,0);你的答案没有任何意义; '线! – sergiol