gpt4 book ai didi

c - Richedit 改变选区颜色

转载 作者:太空宇宙 更新时间:2023-11-04 02:54:00 25 4
gpt4 key购买 nike


我想向 RichEdit 控件添加彩色文本行。但我面临的问题是颜色变化不仅限于我选择的文本。我所做的是:
获取当前光标位置 -> 插入文本 -> 获取光标位置 -> 选择范围 -> 为其着色 -> 取消选择
出于某种原因,它似乎也更改了默认颜色.我尝试保存旧的 CHARFORMAT 并在我为该行着色后恢复它(SCF_DEFAULTSCF_SELECTION 用最后一个字符),但那没有不工作。我错过了什么吗?

我得到了一个 RichEdit 2.0 和以下功能:

hEdit_Console = CreateWindow(RICHEDIT_CLASS, "", 
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOVSCROLL | ES_MULTILINE | ES_READONLY | WS_VSCROLL,
10, 100, 260, 120, hWnd, NULL, ((LPCREATESTRUCT) lParam)->hInstance, NULL);
SendMessage(hEdit_Console, WM_SETFONT, (LPARAM)GetStockObject(DEFAULT_GUI_FONT), TRUE);


void AddInfo2(HWND con, char* text)
{
CHARFORMAT cf;
int start, stop;

memset( &cf, 0, sizeof cf );
cf.cbSize = sizeof cf;
cf.dwMask = CFM_COLOR;
cf.crTextColor = RGB(51, 204, 51);

SendMessage(con, EM_SETSEL, -1, -1);
start = SendMessage(con, WM_GETTEXTLENGTH, 0, 0);
SendMessage(con, EM_REPLACESEL, FALSE, (LPARAM)text);
stop = SendMessage(con, WM_GETTEXTLENGTH, 0, 0);
SendMessage(con, EM_SETSEL, start, stop);
SendMessage(con, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &cf);
SendMessage(con, EM_SETSEL, -1, -1);
}

最佳答案

据我阅读documentation dwEffects 必须设置为 CFE_AUTOCOLOR 或其他有效值。

关于c - Richedit 改变选区颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19378894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com