MFC 设置鼠标样式(SetSystemCursor函数问题)

时间:2024-03-11 09:28:41

  简单说一下在使用MFC中设置鼠标样式的问题,在使用SetSystemCursor函数后,程序退出后并不会自动还原鼠标样式

  BOOL SetSystemCursor( HCURSOR hcur,DWORD id ) 

  该函数使一个应用程序定制系统光标。它用hcur规定的光标内容代替id定义的系统光标内容,接着销毁hcur。

  id比较常用的值:

  OCR_APPSTARTING:标准箭头和小的沙漏;OCR_NORMAL:标准箭头
  OCR_CROSS:交叉十字线光标:OCR_HAND:手的形状(WindowsNT5.0和以后版本)
  OCR_HELP:箭头和向东标记;OCR_IBEAM:I形梁;OCR_NO:斜的圆
  OCR_SIZEALL:四个方位的箭头分别指向北、南、东、西
  OCR_SIZENESEW:双箭头分别指向东北和西南;OCR_SIZENS:双箭头,分别指向北和南
  OCR_SIZENWSE:双箭头分别指向西北和东南;OCR_SIZEWE:双箭头分别指向西和东
  OCR_UP:垂直箭头:OCR_WAIT:沙漏返回值
 
  这里我使用的是CopyCursor函数解决的
 
  HCURSOR CopyCursor(HCURSOR pcur)
 
  
//复制需要被修改的光标资源
//变量要是全局变量
HCURSOR hCur = CopyCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)));

//设置需要改变的光标
//这里最好也拷贝一下,原因不明
BOOL iRet = SetSystemCursor(CopyCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_CROSS))), OCR_NORMAL); ,,,,,,, //还原光标 iRet = SetSystemCursor(hCur, OCR_NORMAL);

 

  最后说一说如果一开始没有还原鼠标资源对应的光标,继续调用SetSystemCursor函数的话,只会使光标资源越来越乱。。。。。。

  解决方法:

  点击确定就可以重载光标类型了。