1.重载Richedit LButton事件
void CChatRichEd::OnLButtonDown(UINT nFlags, CPoint point)
{
CRichEditCtrl::OnLButtonDown(nFlags, point);
HideCaret();
}
2.如果还有网页链接,同时在EN_Link最后面
HideCaret();
改变Richedit默认可编辑鼠标状态
重载OnSetCursor,m_isLink用来判断是否是链接,
BOOL CChatRichEd::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
//return CRichEditCtrl::OnSetCursor(pWnd, nHitTest, message);
if (m_isLink)
{
m_isLink=FALSE;
return CRichEditCtrl::OnSetCursor(pWnd, nHitTest, message);
}
else
{
SetCursor( AfxGetApp()->LoadStandardCursor(IDC_ARROW));
return true;
}
}
EN_Link的事件
m_isLink=true.
这样,链接就以手型显示。
网上其他的方法隐藏Caret
1. 在cpp文件的MESSAGE_MAP声明后添加如下全局变量和函数:
WNDPROC oldProc ;
LRESULT CALLBACK ReditWindowProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch (uMsg)
{
case WM_SETFOCUS:
return 0 ;
default: NULL ;
}
return oldProc(hwnd,uMsg,wParam,lParam) ;
}
在OnInitDialog()中调用:
// TODO: Add extra initialization here
oldProc = (WNDPROC)::SetWindowLong
(m_richEdit.m_hWnd,GWL_WNDPROC,(LONG)ReditWindowProc) ;
这样就可以隐藏caret:)
2. 直接注释掉OnSetFocus() 里的方法。