我正在努力实现类似于域突出显示的功能。我希望我的部分文本在富编辑框中具有不同的颜色,就像我们在IE的域突出显示功能中一样。
问题:
我知道我们必须先使用EM_EXSETSEL
选择所需的文字,然后应用EM_SETCHARFORMAT
。
EM_EXSETSEL
执行所需的操作,并正确选择所需的文本。
但是,当我执行EM_SETCHARFORMAT
时,所选文本中不会发生任何更改。
使用RICHEDIT_CLASS创建窗口。
任何帮助都将不胜感激。
答案 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控件的窗口句柄。
如果没有...然后发布一些代码,那么我们可以看到你可能出错的地方......