MFC 在悬停在 CEdit 控件上时更改鼠标光标
MFC change mouse cursor on hover over CEdit control
我想将鼠标光标更改为我添加到名为 IDC_MY_CURSOR 的项目资源中的自定义光标。每当鼠标仅位于 CEdit 控件上时,我想将鼠标指针更改为我的光标。知道怎么做吗?
要覆盖标准控件的默认行为,您必须提供自己的实现。使用 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;
}
您可以使用此 class 动态创建 CCustomEdit
控件。或者,您可以创建一个标准的编辑控件(动态地或通过资源脚本),并将 CCustomEdit
的实例附加到它(参见 DDX_Control):
void CMyDialog::DoDataExchange( CDataExchange* pDX ) {
DDX_Control( pDX, IDC_CUSTOM_EDIT, m_CustomEdit );
CDialogEx::DoDataExchange( pDX );
}
我想将鼠标光标更改为我添加到名为 IDC_MY_CURSOR 的项目资源中的自定义光标。每当鼠标仅位于 CEdit 控件上时,我想将鼠标指针更改为我的光标。知道怎么做吗?
要覆盖标准控件的默认行为,您必须提供自己的实现。使用 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;
}
您可以使用此 class 动态创建 CCustomEdit
控件。或者,您可以创建一个标准的编辑控件(动态地或通过资源脚本),并将 CCustomEdit
的实例附加到它(参见 DDX_Control):
void CMyDialog::DoDataExchange( CDataExchange* pDX ) {
DDX_Control( pDX, IDC_CUSTOM_EDIT, m_CustomEdit );
CDialogEx::DoDataExchange( pDX );
}