Сначала создадим свой курсор в ресурсах.
Теперь нам нужно перегрузить сообщение смены курсора. Хитрость в том, чтобы это сообщение увидеть. Для этого нужно установить фильтр сообщений - Windows.
У вас появится макрос обработки сообщения смены курсора.
BEGIN_MESSAGE_MAP(CTestDDVDlg, CDialog) //{{AFX_MSG_MAP(CTestDDVDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_WM_SETCURSOR() //}}AFX_MSG_MAP END_MESSAGE_MAP()
Описание функции.
class CTestDDVDlg : public CDialog { // Construction ......... protected: HICON m_hIcon; // Generated message map functions //{{AFX_MSG(CTestDDVDlg) virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnButton1(); afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); //}}AFX_MSG DECLARE_MESSAGE_MAP() };
Ну и сама функцияб внутри которой нужно вызывать функцию установки курсора.
BOOL CTestDDVDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { // TODO: Add your message handler code here and/or call default SetCursor(AfxGetApp()->LoadCursor(IDC_POINTER)); return TRUE; }
Запустим и посмотрим.