Winapi 富编辑控件中的颜色更改

Winapi 富编辑控件中的颜色更改,winapi,richedit-control,Winapi,Richedit Control,当您擦除彩色文本时。默认情况下,控件将新输入的文本颜色设置回最近擦除的颜色。你怎么能避免呢?键入前是否需要检查每个字符样式 更新: 我正试着像这样设置文本颜色 SendMessage(hEdit, EM_SETSEL, start_pos, end_pos); //select text for coloring CHARFORMAT cf; memset( &cf, 0, sizeof cf ); cf.cbSize = sizeof

当您擦除彩色文本时。默认情况下,控件将新输入的文本颜色设置回最近擦除的颜色。你怎么能避免呢?键入前是否需要检查每个字符样式

更新:

我正试着像这样设置文本颜色

SendMessage(hEdit, EM_SETSEL, start_pos, end_pos); //select text for coloring

        CHARFORMAT cf;
        memset( &cf, 0, sizeof cf );
        cf.cbSize = sizeof cf;
        cf.dwMask = CFM_COLOR;
        cf.crTextColor = RGB(255,0,0);
        SendMessage( hEdit , EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &cf);

        SendMessage(hEdit, EM_SETSEL, -1, 0 ); //deselect text
        cf.crTextColor = RGB(0,0,0); //reset colour
        SendMessage( hEdit , EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &cf); //set colour

你的问题很不清楚。疯狂尝试:指定文本属性时,会丢失所有格式。请确保改用AppendText()。并将SelectionColor和SelectionBackColor属性设置回任何文本上色后的状态,以便新输入的文本获得首选的默认颜色。

更改颜色(例如,红色)后,我将颜色设置回默认(黑色)。但在运行时,当我尝试在richedit中删除该文本(红色)时,默认文本颜色属性也会更改(为红色)。是的,这就是我建议恢复SelectionColor/BackColor属性的原因。但我不知道何时恢复,它是否像通知消息一样向其父级发送颜色属性已更改?您更改了颜色,对吗?这样你就知道什么时候把它们换回来了。使用更改后的颜色后。这有点太明显了,你真的需要用更好的信息更新你的问题。当我在更改(如第1行为红色)后将颜色恢复为默认颜色(黑色)时,它会工作,但如果我再次键入(第1行),颜色在运行时会变回红色。