Сначала создадим свой курсор в ресурсах.

Теперь нам нужно перегрузить сообщение смены курсора. Хитрость в том, чтобы это сообщение увидеть. Для этого нужно установить фильтр сообщений - 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;
}
Запустим и посмотрим.
