一、在MFC中设置鼠标光标

1、载入系统光标

::SetCursor( ::LoadCursor( NULL, IDC_HAND )  );

注意:

LoadCursor第一个参数必须为NULL,否则会载入失败。如果以以下方式调用,则会失败:

::SetCursor(  ::LoadCursor( AfxGetApp()->LoadCursor( IDC_HAND ) ) );

或::SetCursor( ::LoadCursor( AfxGetInstanceHandle(), IDC_HAND ) );

  

2、从资源中载入光标

::SetCursor(  ::LoadCursor( AfxGetInstanceHandle(), MAKEINTRESOURCE( IDC_MY_CURSOR )  ) ); 

或::SetCursor(  ::LoadCursor( AfxGetApp()->LoadCursor( MAKEINTRESOURCE( IDC_MY_CURSOR )  ) );

 

3、从文件中载入光标

HCURSOR hcur = ::LoadCursorFromFile( TEXT("myancur.ani") ); 

::SetCursor( hcur );

注意:

此处的文件必须是以.ani或者.cur的格式存储的

 

二、MFC中的一个应用

BOOL CmfcCursorTestDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if( pWnd == GetDlgItem( IDC_BTN_TEST ) )
{
//一、设置此窗口中特定控件的光标
HCURSOR hcur=::LoadCursorFromFile( TEXT("myancur.ani") ); //加载光标
::SetCursor( hcur );

//::SetCursor( AfxGetApp()->LoadCursor( IDC_CURSOR_TEST ) );
//::SetCursor( ::LoadCursor( NULL, IDC_HAND ) );
//::SetCursor( ::LoadCursor( AfxGetInstanceHandle(), MAKEINTRESOURCE(IDC_CURSOR_TEST) ) );
return true;
}

//二、设置整个窗口的光标
::SetCursor( ::LoadCursor( NULL, IDC_HAND ) );
return true;

return CDialogEx::OnSetCursor(pWnd, nHitTest, message);
}

作者:山丘儿