情景:
我做了個對話框,里面只包含一個富文本框。對應的類為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);
}