2015-07-11 168 views
0

我想將鼠標光標更改爲自定義光標,並將其添加到名爲IDC_MY_CURSOR的項目Resource中。只要鼠標懸停在CEdit控件上,我想改變鼠標指針到我的光標。任何想法如何做到這一點?MFC將鼠標光標懸停在CEdit控件上

回答

4

要覆蓋標準控件的默認行爲,您必須提供自己的實現。最直接的方式做到這一點使用MFC是從一個標準的控制實現(CEdit在這種情況下)得出:

CustomEdit.h:

class CCustomEdit : public CEdit { 
public: 
    CCustomEdit() {} 
    virtual ~CCustomEdit() {} 

protected: 
    DECLARE_MESSAGE_MAP() 

public: 
    // Custom message handler for WM_SETCURSOR 
    afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); 
}; 

CustomEdit.cpp:

#include "CustomEdit.h" 

BEGIN_MESSAGE_MAP(CCustomEdit, CEdit) 
    ON_WM_SETCURSOR() 
END_MESSAGE_MAP() 

BOOL CCustomEdit::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { 
    ::SetCursor(AfxGetApp()->LoadCursor(IDC_MY_CURSOR)); 
    // Stop processing 
    return TRUE; 
} 

您可以使用此類動態創建一個CCustomEdit控件。或者,您可以創建一個標準的編輯控件(動態或通過資源腳本),以及附加的CCustomEdit一個實例(參見DDX_Control):

void CMyDialog::DoDataExchange(CDataExchange* pDX) { 
    DDX_Control(pDX, IDC_CUSTOM_EDIT, m_CustomEdit); 
    CDialogEx::DoDataExchange(pDX); 
} 
+0

Thankx ...那做的工作:) –