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

C++ Richedit无窗口操作中的颜色变化,c++,highlighting,richedit,C++,Highlighting,Richedit,我正在尝试实现类似于域突出显示的功能。我想我的部分文字在丰富的编辑框是不同的颜色,就像我们有在域突出显示功能的IE 问题: 我知道我们必须首先使用EM_-exsetel选择所需的文本,然后应用EM_-SETCHARFORMAT EM_exsetel执行所需操作并正确选择所需文本。 但是,当我执行EM_SETCHARFORMAT时,所选文本中不会发生任何更改 窗口是使用RICHEDIT_类创建的 如果您有任何帮助,我们将不胜感激。这样做如何(在当前选择中设置粗体、红色文本): 其中hWnd是富编辑

我正在尝试实现类似于域突出显示的功能。我想我的部分文字在丰富的编辑框是不同的颜色,就像我们有在域突出显示功能的IE

问题: 我知道我们必须首先使用
EM_-exsetel
选择所需的文本,然后应用
EM_-SETCHARFORMAT

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

窗口是使用RICHEDIT_类创建的


如果您有任何帮助,我们将不胜感激。

这样做如何(在当前选择中设置粗体、红色文本):

其中hWnd是富编辑控件的窗口句柄


如果不是。。。然后发布一些代码,这样我们就可以看到您可能出了什么问题……

我现在无法访问代码……但我可以分享详细信息。。。。正如我所列出的,我需要为无窗口操作进行编辑…所以我使用Txsendmessage来代替。。。您能在SET call之前建议使用EM_GETCHARFORMAT的原因吗。。。我的代码类似于cfm.dwEffects=0;cfm.crTextColor=RGB(255,0,0);cfm.dwMask=FM_COLOR;//设置新格式::SendMessage(hWnd、EM_SETCHARFORMAT、SCF_SELECTION、(LPARAM)和cfm);我们是否需要执行更多的消息以查看更改的文本颜色..没有理由首先使用EM_GETCHARFORMAT,这是从我的一些代码中抄袭的,我在其中阅读了charformat,然后检查建议的格式是否确实在更改它以节省时间。我唯一能想到的是
memset(&cfm,0,sizeof(cfm))cfm.cbSize=sizeof(cfm)(如果Windows无法识别大小,因为它没有初始化,它可能会忽略您)很抱歉,我错过了这件事…这是我代码的一部分。。。。另外,我正在使用charformat2结构而不是charformat2从未使用过无窗口富编辑控件或TxSendMessage,抱歉。。。我不确定我能帮上更多的忙。。。
   // 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);