3.24如何动态的改变某个视图的光标?

      这里所有的工作都发生在视图类中,这个视图类就是打算动态的改变其光标以反应应用程序状态的类。这个动态光标一般反应 属于视图或文档类的某个成员变量的值。

第1步:在要动态改变光标的视图类中增加HCURSOR类型的成员变量,为每个要显示的光标创建一个变量

第2步:在视图类的构造函数中增加代码,装载相应的光标,初始化在第1步中声明的HCURSOR成员变量。

第3步:使用ClassWizard在视图类中增加一个句柄来处理WM_SETCURSOR消息,该消息处理函数内调用SetCursor()。根据应用程序的状态选择正确的光标。若返回true,说明消息处理函数设置了光标。

 

解释:

每当鼠标指针移动时,Windows通过鼠标指针把WM_SETCURSOR消息传递给窗口,当窗口没有处理WM_SETCURSOR消息时,DefWindowProc()按照下面的方式自动的设置光标:

1)如果光标位于窗口客户区的外部(单击测试代码不等于HICLIENT),调用::SetCursor(),设置光标为标准箭头IDC_ARROW.

2)如果光标位于窗口客户区内部(单击测试代码等于HICLIENT)调用::SetCursor(),设置光标为与该窗口相关联的WNDCLASS结构的hCursor字段。这样,通过在自己的代码中处理WM_SETCURSOR消息,当鼠标指针访问窗口的成员区域时,我们就能够动态的选择光标的形状了。

附加注释:

当设计自己的光标时,不要忘记设置正确的热点(hotspot)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值