2

我认为这里的想法很简单,但我似乎无法弄清楚。基本上我所拥有的是一个 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 和 google,很多关于这方面的文档都是 10 年前的+。

是最近提出的一个问题,它问了我同样的问题,除了他的帖子是我真的不关心的巨大代码片段。我已经尝试过使用

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

使用前

m_pMessageTextBox.SetSelectionCharFormat(cf);

没有任何变化,我认为在这种情况下,粗体字会同时是粗体和红色,但它只是保持黑色。

4

1 回答 1

3

好的,所以我设法弄清楚了,我的一个条件语句被破坏了,所以我的部分代码实际上从未被阅读过。对于遇到此问题的任何人,这就是我使用的:

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); 

为此,我还没有机会玩弄它,只是想看看我是否可以缩短它,但它正在按照我现在想要的方式工作。首先,它执行粗体属性并将其应用于文本,然后执行文本颜色属性并将其从文本的开头应用到结尾。

于 2016-06-08T18:16:24.803 回答