CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

我想在我的应用程序里改变鼠标形状,该怎么做?

楼主cat_dog(东方软件)2006-03-06 08:13:33 在 VC/MFC / 基础类 提问

我想在我的应用程序里改变鼠标形状,使其变为64x64的自定义形状,我该怎么做?各位大侠帮帮忙。 问题点数:100、回复次数:19Top

1 楼qybao(阿宝)回复于 2006-03-06 08:15:48 得分 5

Win   API  
  HCURSOR   SetCursor(HCURSOR   hCursor);  
  Top

2 楼qybao(阿宝)回复于 2006-03-06 08:17:19 得分 5

SetCursor(LoadCursor(NULL,ID_XXX));//ID_XXX是你自己的资源图标IDTop

3 楼xieqidong(广州)回复于 2006-03-06 09:26:23 得分 5

来晚了。Top

4 楼lisypro()回复于 2006-03-06 09:48:41 得分 5

HCURSOR   SetCursor(HCURSOR   hCursor);  
  SetCursor(LoadCursor(NULL,ID_XXX));//ID_XXX是你自己的资源图标ID  
  Top

5 楼sinkileu(小心)回复于 2006-03-06 11:36:14 得分 5

过Top

6 楼LongLongAgoImBoy(ThereIsAMe)回复于 2006-03-06 11:58:09 得分 5

HCURSOR   hCursor;  
  hCursor=AfxGetApp()->LoadCursor(IDC_HAND);//系统默认的鼠标资源  
  //将鼠标设为小手状  
  SetCursor(hCursor);Top

7 楼bobzhu2002()回复于 2006-03-06 12:52:57 得分 10

我来总结一下,假设是在对话框上定义了8个picture控件,当程序启动时,mouse移到这8个显示区块,就显示mouse成"小手"的形状  
  具体操作和代码如下  
  1)给工程添加"小手"的光标文件  
  2)用classwizard选择SetCursor消息处理函数  
  3)自己在改消息处理成员函数中添加如下代码  
  运行试试看,OK了吧?  
   
   
  //   here   codes   is   for   set   cursor   shape  
  BOOL   CTestDlg::OnSetCursor(CWnd*   pWnd,   UINT   nHitTest,   UINT   message)    
  {  
  CPoint pt;  
   
  GetCursorPos(&pt);    
   
   
  RECT pic1,   pic2,   pic3,   pic4,   pic5,   pic6,   pic7,   pic8;  
   
  GetDlgItem(   IDC_PIC1   )->GetWindowRect(   &pic1   );  
  GetDlgItem(   IDC_PIC2   )->GetWindowRect(   &pic2   );  
  GetDlgItem(   IDC_PIC3   )->GetWindowRect(   &pic3   );  
  GetDlgItem(   IDC_PIC4   )->GetWindowRect(   &pic4   );  
  GetDlgItem(   IDC_PIC5   )->GetWindowRect(   &pic5   );  
  GetDlgItem(   IDC_PIC6   )->GetWindowRect(   &pic6   );  
  GetDlgItem(   IDC_PIC7   )->GetWindowRect(   &pic7   );  
  GetDlgItem(   IDC_PIC8   )->GetWindowRect(   &pic8   );  
   
  if   (   (   pt.x   >=   pic1.left   &&   pt.x   <=   pic1.right   &&   pt.y   >=   pic1.top   &&   pt.y   <=   pic1.bottom   )   ||  
    (   pt.x   >=   pic2.left   &&   pt.x   <=   pic2.right   &&   pt.y   >=   pic2.top   &&   pt.y   <=   pic2.bottom   )   ||  
    (   pt.x   >=   pic3.left   &&   pt.x   <=   pic3.right   &&   pt.y   >=   pic3.top   &&   pt.y   <=   pic3.bottom   )   ||  
    (   pt.x   >=   pic4.left   &&   pt.x   <=   pic4.right   &&   pt.y   >=   pic4.top   &&   pt.y   <=   pic4.bottom   )   ||  
    (   pt.x   >=   pic5.left   &&   pt.x   <=   pic5.right   &&   pt.y   >=   pic5.top   &&   pt.y   <=   pic5.bottom   )   ||  
    (   pt.x   >=   pic6.left   &&   pt.x   <=   pic6.right   &&   pt.y   >=   pic6.top   &&   pt.y   <=   pic6.bottom   )   ||  
    (   pt.x   >=   pic7.left   &&   pt.x   <=   pic7.right   &&   pt.y   >=   pic7.top   &&   pt.y   <=   pic7.bottom   )   ||  
    (   pt.x   >=   pic8.left   &&   pt.x   <=   pic8.right   &&   pt.y   >=   pic8.top   &&   pt.y   <=   pic8.bottom   )   )  
  {  
  ::SetCursor(   hCursor   );  
  bSelect   =   true;  
  return   true;  
  }  
   
  bSelect   =   false;  
   
  return   CDialog::OnSetCursor(pWnd,   nHitTest,   message);  
  }  
  Top

8 楼xx_jj()回复于 2006-03-06 13:10:52 得分 5

楼上的很详细了Top

9 楼insanehh(有一个美麗的小豆豆)回复于 2006-03-06 13:14:11 得分 5

學習Top

10 楼cat_dog(东方软件)回复于 2006-03-06 14:20:20 得分 0

但是这些只能改变形状,不能改变其大小.我想要64x64的。Top

11 楼wawaku(一堆裤衩!)回复于 2006-03-06 14:30:44 得分 50

1,在资源菜单中Ctrl+R  
  2.新建Cursor资源  
  3.可以看到新建的资源IDC_CURSOR1,在画布的上面有它的属性框,一般为(单色32*32)  
  在这个框的右边有一个按扭,点下,有对话框弹出,可以自定义大小.  
  4.在它右边还有一个没有图标的按扭,叫做"热点",可以来设置鼠标的点击热点.Top

12 楼cat_dog(东方软件)回复于 2006-03-08 08:17:08 得分 0

hCursor=AfxGetApp()->LoadCursor(IDC_HAND);时返回   NULL,GetSystemMetrics(SM_CXCURSOR)和GetSystemMetrics(SM_CXCURSOR)都返回32,是不是我的系统不支持64x64的Cursor?Top

13 楼cat_dog(东方软件)回复于 2006-03-08 12:33:14 得分 0

To   wawaku(挣钱啦挣钱啦   娶个媳妇盖房啦)   :    
          按你的做法后,IDC_CURSOR里有两个Cursor,一个是Monochrome(32x32),一个是64x64,2colors,我怎么选择64x64那个Cursor,默认是Monochrome(32x32),Top

14 楼nkwesley(江南丝竹)回复于 2006-03-08 17:22:13 得分 0

建议使用32x32Top

15 楼wawaku(一堆裤衩!)回复于 2006-03-08 17:26:07 得分 0

删掉你的那个Monochrome(32x32)的,不再用IDC_CURSOR这外名字,换个名字用,引用的时候也换就是了Top

16 楼duanhuicen(sanlang)回复于 2006-03-08 18:04:45 得分 0

学习Top

17 楼cat_dog(东方软件)回复于 2006-03-08 19:39:06 得分 0

To   wawaku(挣钱啦挣钱啦   娶个媳妇盖房啦):    
      Monochrome(32x32)删不掉的,还有IDC_CURSOR我也改了,也没有用。Top

18 楼cat_dog(东方软件)回复于 2006-03-08 22:12:50 得分 0

UpTop

19 楼wawaku(一堆裤衩!)回复于 2006-03-09 08:16:23 得分 0

那我没辙了,我一直都是这样做的,只要  
  SetCursor(AfxGetApp()->LoadCursor(IDC_MOVE));  
  里引用的是正确的ID名就没问题呀,呵,我想你是把这个工程的资源弄乱了,看得懂就编辑一下XXX.RC里的东西吧,图方便就再建个工程拷代码喽  
  东西都是自己研究的,VC里就是有很多不爽的地方,克服一下了Top

相关问题

  • 如何改变应用程序图标?
  • 创建应用程序时怎样把应用程序的图标改变。
  • 弱弱的问题,请问在应用程序里怎么改变鼠标图标呀?(在线上等待大家的关注,50分送上)
  • 如何得到其他应用程序窗口的鼠标坐标?请注意,是其他应用程序窗口,而不是本应用程序窗口,
  • 如何指定应用程序的鼠标光标?
  • 我的应用程序鼠标左键会不响应?????
  • 如何捕获应用程序窗口外的鼠标事件?
  • 改变鼠标形状?
  • 鼠标形状的改变
  • 如何在一个应用程序中改变另一个应用程序的窗口类的背景画刷?

关键词

  • idc
  • 鼠标
  • 代码
  • top
  • null
  • pic
  • hcursor
  • setcursor
  • pt
  • getwindowrect

得分解答快速导航

  • 帖主:cat_dog
  • qybao
  • qybao
  • xieqidong
  • lisypro
  • sinkileu
  • LongLongAgoImBoy
  • bobzhu2002
  • xx_jj
  • insanehh
  • wawaku

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo