Richedit无窗口操作中的颜色变化

时间:2012-11-21 14:50:44

标签: c++ highlighting richedit

我正在努力实现类似于域突出显示的功能。我希望我的部分文本在富编辑框中具有不同的颜色,就像我们在IE的域突出显示功能中一样。

问题: 我知道我们必须先使用EM_EXSETSEL选择所需的文字,然后应用EM_SETCHARFORMAT

EM_EXSETSEL执行所需的操作,并正确选择所需的文本。 但是,当我执行EM_SETCHARFORMAT时,所选文本中不会发生任何更改。

使用RICHEDIT_CLASS创建窗口。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

这样的事情(在当前选择上设置粗体红色文字):

   // Set up the CHARFORMAT structure
   CHARFORMAT cfm;
   cfm.cbSize = sizeof(cfm);    // Don't forget this!

   // Get char format
   ::SendMessage(hWnd, EM_GETCHARFORMAT, SCF_SELECTION, (LPARAM)&cfm);

   // Set the new effects
   cfm.dwEffects   = CFE_BOLD;
   cfm.crTextColor = RGB(255,0,0);
   cfm.dwMask      = CFM_BOLD | CFM_COLOR;

   // Set the new format
   ::SendMessage(hWnd, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cfm);

其中hWnd是Rich Edit控件的窗口句柄。

如果没有...然后发布一些代码,那么我们可以看到你可能出错的地方......