gpt4 book ai didi

c++ - 如何更改 CRichEditCtrl 中的突出显示颜色?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:50:27 24 4
gpt4 key购买 nike

我试图捕捉 EN_SelChange 事件,但它从未触发,尽管我已经添加了

rich->SetEventMask(rich->GetEventMask() | ENM_CHANGE | ENM_SELCHANGE);

在 OnInitDialog 中。所以我尝试在我的 OnEraseBkgnd 函数中添加以下代码。

BEdit *edit = (BEdit *)GetDlgItem(IDC_MAIN_EDIT1);
CRichEditCtrl *ctrl = &(edit->GetRichEditCtrl());
long s = 0 , e = 0;
ctrl->GetSel(s, e);

程序在 GetSel 函数上崩溃了

我现在正在想办法在文本被选中时更改其突出显示颜色。

最佳答案

我想出了一个解决这个问题的方法。从消息循环中捕获选择消息:

BOOL CNotepadDlg::PreTranslateMessage(MSG*   pMsg)
{
if (pMsg->message == 514||(pMsg->message == 257 && (pMsg->wParam == 40|| pMsg->wParam == 39 || pMsg->wParam == 38 || pMsg->wParam == 37)))
{
CString str;
BEdit *edit = (BEdit *)GetDlgItem(IDC_MAIN_EDIT1);
edit->GetRichEditCtrl().GetSel(start, end);
......
}
......
}

514是鼠标选择事件,257是键盘事件代码。当消息为 257 时,wParam 代表触发该事件的键。通过这种方式我们可以捕捉到选择事件,虽然它不够优雅......

                                                 Bill Sun

关于c++ - 如何更改 CRichEditCtrl 中的突出显示颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29925946/

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