【问题标题】:Color change in Rich Edit ControlRich Edit Control 中的颜色变化
【发布时间】:2011-01-17 16:31:37
【问题描述】:

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

更新:

我正在尝试像这样设置文本颜色。

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

【问题讨论】:

    标签: winapi richedit-control


    【解决方案1】:

    你的问题很不清楚。狂野刺痛:分配 Text 属性时,您会丢失所有格式。请务必改用 AppendText()。并将 SelectionColor 和 SelectionBackColor 属性设置回为任何文本着色后的状态,以便新输入的文本获得首选的默认颜色。

    【讨论】:

    • 我在更改颜色(例如红色)后将颜色设置回默认值(黑色)。但是在运行时,当我尝试在 Richedit 中擦除该文本(红色)时,默认文本颜色属性也会更改(变为红色)。
    • 是的,这就是我建议恢复 SelectionColor/BackColor 属性的原因。
    • 但我不知道什么时候恢复,它会像通知消息一样向其父级发送颜色属性已更改的通知吗?
    • 你改变了颜色,对吧?所以你会知道什么时候把它们改回来。使用更改后的颜色后。这有点太明显了,你真的需要用更好的信息更新你的问题。
    • 当我在更改(比如第 1 行变为红色)后将颜色恢复为默认值(黑色)时,它可以工作,但如果我再次键入(在第 1 行中),颜色会在运行时。
    猜你喜欢
    • 2011-09-19
    • 1970-01-01
    • 2020-02-25
    • 2019-02-15
    • 2013-08-15
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    相关资源
    最近更新 更多