1、用向导新建一个基于对话框的程序CCurDlg
2、将动画光标(ANI格式)作为资源导入,资源类型为ANICURSOR,ID为IDR_ANICURSOR1.
3、为CCurDlg添加一个成员变量: HCURSOR m_cursor;
4、在CCurDlg::OnInitDialog()添加代码:m_cursor=AfxGetApp()->LoadCursor(IDR_ANICURSOR1);
5、添加CCurDlg的WM_SETCURSOR消息,在CCusorDlg::OnSetCursor()函数中删除默认代码,添加代码:::SetCursor(m_cursor); return true;
运行程序动画光标正常。
用同样的办法,我加载多个动画光标资源,ID分别为IDR_ANICURSOR1,IDR_ANICURSOR2,IDR_ANICURSOR3,IDR_ANICURSOR4.....
在CCurDlg::OnInitDialog()中尝试加载各个资源的ID,发现大部分动画光标资源无法显示。我做了很多实验,很奇怪,只有最后一个资源(最后加进来的光标资源)是一直可以显示的,其他的很少可以显示出来。为什么啊?等待高手!

解决方案 »

  1.   

    LZ 不会是将所有加载的光标句柄都保存到 m_cursor 数据成员吧?
      

  2.   

    每次只加载一个光标资源ID,编译,运行;改掉上一次的光标资源ID,编译,运行!只有最后一个光标资源可以显示出来,郁闷!
      

  3.   

    m_cursor=AfxGetApp()->LoadCursor(IDR_ANICURSOR1); //在这句断点,查看一下 m_cursor 是否为 NULL。还可以试试 rebuild all,重新编译一下程序。BUG: Visual C++ 不能识别动画的游标类型
    http://support.microsoft.com/kb/189497
      

  4.   

    竟然真的是NULL,请问有解决办法吗?我想把程序变得简洁一点,还是从资源中加载,不用LoadCursorFromFile!麻烦了!