注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

沙漠里de烟雨

原创分享,禁止转载

 
 
 

日志

 
 

MFC--加载个性鼠标指针的方法  

2012-09-04 00:47:38|  分类: C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

方法1:动态加载;(有一个缺点:生成的exe文件要与res目录一起放在同一目录下,且res中有此光标文件,否则会看不到鼠标指针)

///1)

HCURSOR m_hCursor;  //成员变量;


////2) 在OnInitDlg中赋值;
m_hCursor = LoadCursorFromFile("res\\pointer2.cur");

////3) 针对Dialog对话框添加SetCursor事件:
BOOL CMinderDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
 // TODO: 在此添加消息处理程序代码和/或调用默认值

 ::SetCursor(m_hCursor);

 //return CDialog::OnSetCursor(pWnd, nHitTest, message);  //这个是系统自动产生的,一定要删除或注释掉;

 return TRUE;
}

////4)  这里一定要注意:

在其App类中的App.cpp中一定要添加释放语句,否则关闭时会因内存泄露而弹错:

BOOL CMinderApp::InitInstance()
{
 //........(代码省略)

 CMinderDlg dlg;
 m_pMainWnd = &dlg;
 INT_PTR nResponse = dlg.DoModal();
 if (nResponse == IDOK)
 {
  // TODO: 在此放置处理何时用“确定”来关闭
  //对话框的代码
 }
 else if (nResponse == IDCANCEL)
 {
  // TODO: 在此放置处理何时用“取消”来关闭
  //对话框的代码
 }

 // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
 // 而不是启动应用程序的消息泵。

 ::DestroyCursor(dlg.m_hCursor);  //-----注:要添加的就是这句(不能是m_pMainWnd->,因为m_hCursor不是它的成员);

 return FALSE;
}


方法2:静态加载;(导入资源文件)  //不要第4)步,不会资源泄露;
1)
HCURSOR m_hCursor; //成员变量;
2)
m_hCursor = AfxGetApp()->LoadCursor(IDC_POINTER);//初始化中设置;(IDC_POINTER是通过加载光标资源至工程的光标ID号,要.cur后缀的图片)
3)和方法1一样,但不要第4)步;

  评论这张
 
阅读(1390)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018