情景:
我做了个对话框,里面只包含一个富文本框。对应的类为CCmdRichEdit继承自CRichEditCtrl。
因为默认的CRichEditCtrl它不像CEdit那样,单击右键时是不会弹出菜单的。因此我自己实现了“复制”,“粘贴”,“剪切”功能的右键菜单。
随后发现,功能一切正常,但是当鼠标移至菜单上时,没有变成常见的那种箭头式指针。
过程:
尝试了在OnContextMenu,OnMouseMove, 中调用::SetCursor(LoadCursor(NULL, IDC_ARROW));
都不起作用。
注意:
每次移动鼠标,OnMouseMove都会默认的改变指针的样式,但在里面修改却对右键菜单不起作用。
解决办法:
1、设置个类变量m_bContext,在OnContext开始和结束分别设为 TRUE和FALSE;
2、OnSetCursor中根据m_bContext来改变光标形式。
BOOL CCmdRichEdit::OnSetCursor(CWnd *pWnd, UINT nHitTest, UINT message)
{
//文本框右键的指针设为箭头
if(m_bShowContext)
{
::SetCursor(LoadCursor(NULL, IDC_ARROW));
return TRUE;
}
return CRichEditCtrl::OnSetCursor(pWnd, nHitTest, message);
}