I want to change mouse cursor to custom cursor which i added to project Resource named IDC_MY_CURSOR. i want to change mouse pointer to my cursor whenever mouse is over CEdit control only. Any idea how to do that?
Asked
Active
Viewed 2,278 times
1 Answers
4
To override the default behavior of standard controls, you will have to provide your own implementation. The most straight forward way to do this using MFC is to derive from a standard control implementation (CEdit in this case):
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;
}
You can use this class to dynamically create a CCustomEdit
control. Alternatively, you can create a standard edit control (either dynamically or through a resource script), and attach an instance of CCustomEdit
to it (see DDX_Control):
void CMyDialog::DoDataExchange( CDataExchange* pDX ) {
DDX_Control( pDX, IDC_CUSTOM_EDIT, m_CustomEdit );
CDialogEx::DoDataExchange( pDX );
}

IInspectable
- 46,945
- 8
- 85
- 181
-
Thankx... that did the job :) – Raja Ayaz Jul 12 '15 at 09:00