【问题标题】:MFC change mouse cursor on hover over CEdit control将鼠标悬停在 CEdit 控件上时 MFC 更改鼠标光标
【发布时间】:2015-07-11 16:23:53
【问题描述】:

我想将鼠标光标更改为我添加到名为 IDC_MY_CURSOR 的项目资源中的自定义光标。只要鼠标悬停在 CEdit 控件上,我就想将鼠标指针更改为光标。知道该怎么做吗?

【问题讨论】:

    标签: mfc hover cursor cedit custom-cursor


    【解决方案1】:

    要覆盖标准控件的默认行为,您必须提供自己的实现。使用 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 );
    }
    

    【讨论】:

    • 谢谢...完成了这项工作:)
    猜你喜欢
    • 2012-09-22
    • 1970-01-01
    • 2021-11-27
    • 2022-01-26
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    相关资源
    最近更新 更多