RichEdit 选中文本的高亮显示 VC++

发布时间 2023-08-12 08:20:28作者: XGZ21

RichEdit控件失去焦点后,选中文本不再高亮显示。

有两种方法可以改变,使得控件失去焦点仍然保持高亮:

方法一:创建控件时设置ES_NOHIDESEL风格

m_hWndREdit = CreateWindow(_T("RichEdit20W"), NULL,  //RICHEDIT_CLASS  RichEdit20A RichEdit20W
        WS_CHILD | WS_VISIBLE | ES_MULTILINE | WS_VSCROLL|ES_NOHIDESEL,  //始终高亮显示选中
        0, 0, 0, 0,
        m_hWnd, (HMENU)IDC_EDITMSG2, m_hInst, NULL);

 

方法二:发EM_HIDESELECTION消息

SendMessage(m_hWndREdit, EM_HIDESELECTION, 0, 0);  //保持选中文本的高亮

SendMessage(m_hWndREdit, EM_HIDESELECTION, 1, 0);  //取消文本的高亮,使得立即看到效果

 

实际用方法二更方便,一般会有两种场景:

1.查找,这时需要保持高亮,以便操作查找对话框时,能清楚看到目标

2.设置字体,这时不要保持高亮,以便设置后立即能看到效果,特别是颜色,而不是还要另外取消选中才能看到效果。