情景:
我做了個(gè)對(duì)話(huà)框,里面只包含一個(gè)富文本框。對(duì)應(yīng)的類(lèi)為CCmdRichEdit繼承自CRichEditCtrl。
因?yàn)槟J(rèn)的CRichEditCtrl它不像CEdit那樣,單擊右鍵時(shí)是不會(huì)彈出菜單的。因此我自己實(shí)現(xiàn)了“復(fù)制”,“粘貼”,“剪切”功能的右鍵菜單。
隨后發(fā)現(xiàn),功能一切正常,但是當(dāng)鼠標(biāo)移至菜單上時(shí),沒(méi)有變成常見(jiàn)的那種箭頭式指針。
過(guò)程:
嘗試了在OnContextMenu,OnMouseMove, 中調(diào)用::SetCursor(LoadCursor(NULL, IDC_ARROW));
都不起作用。
注意:
每次移動(dòng)鼠標(biāo),OnMouseMove都會(huì)默認(rèn)的改變指針的樣式,但在里面修改卻對(duì)右鍵菜單不起作用。
解決辦法:
1、設(shè)置個(gè)類(lèi)變量m_bContext,在OnContext開(kāi)始和結(jié)束分別設(shè)為 TRUE和FALSE;
2、OnSetCursor中根據(jù)m_bContext來(lái)改變光標(biāo)形式。
BOOL CCmdRichEdit::OnSetCursor(CWnd *pWnd, UINT nHitTest, UINT message)
{
//文本框右鍵的指針設(shè)為箭頭
if(m_bShowContext)
{
::SetCursor(LoadCursor(NULL, IDC_ARROW));
return TRUE;
}
return CRichEditCtrl::OnSetCursor(pWnd, nHitTest, message);
}