网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> 程序设计 >> VC编程 >> 文章正文
  WINDOWS下的动态鼠标光标控制            【字体:
WINDOWS下的动态鼠标光标控制
作者:佚名    文章来源:不详    点击数:    更新时间:2007-8-1    


正常情况下的Windows鼠标光标形状为向左上角的单箭头符号。
正在装载数据……
根据应用程序不同客户区域的需要,用户可以建立自己的鼠标光标形状,常见的有手形鼠标光标、不同方向的箭头鼠标光标、立体箭头鼠标光标和笔式鼠标光标等。
中文Windows95下的鼠标光标形状比较丰富,在"\WINDOWS\CURSORS"目录下存放。此外,用户完全可以利用Windows下的中文SDK3.1、VF P3.0和Delphi2.0中的"IMAGE EDITOR"等资源编辑器创建自己的鼠标光标资源文件.CUR。这里笔者将自己的一些编程技术和基本方法介绍给大家,供参考。

鼠标光标资源的定义和调用

建立起自己的鼠标光标资源文件后,首先需要在应用程序的资源文件中定义鼠标光标。假设鼠标光标资源文件名为MOUSE.CUR和MOUSEM.CUR,在资源文件中的定义方法如下:


imecurh CURSOR mouse.cur

imecurm CURSOR mousem.cur

鼠标光标资源文件经定义之后,方可在应用程序中利用LoadCursor()函数调入内存使用,其调用方法如下:

HCURSOR hCurh;//定义鼠标资源句柄


HCURSOR hCurm;//将鼠标光标数据调入内存


hCurh=LoadCursor(hInstance,


imecurh");hCurh=LoadCursor(hInstance,"imecurm");

动态鼠标光标的全局注方法
当鼠标光标移动到客户应用程序的窗口内时,鼠标光标立刻变成定制的形状。要实现这一功能,只需在注册客户应用程序窗口类时定义相应的鼠标光标资源即可。正常情况下客户应用程序鼠标句柄的定义方法如下:


wc.Cursor=LoadCursor(NULL,IDC_ARROW);

要在窗口内将鼠标光标变成特定的形状,必须用下述方法定义光标句柄,然后注册窗口类:

wc.hCursor = hCurh;


利用这种方法定制的全局性鼠标光标具有如下特点:只要鼠标光标移入该客户应用程序的窗口内,光标形状立刻变成定制的形状;鼠标光标移动平滑快速,无抖动等不良现象。
特定客户区域内的动态鼠标光标

很多应用程序具有在特定的客户区域内鼠标光标具有特定形状的功能,如UCWIN3.1的特殊符号软键盘:当鼠标光标移动到软键盘窗口内的按键位置时,光标形状为手形,当移动到非按键位置时,光标形状为上下左右四箭头形状;要实现这一动态鼠标光标功能,应按如下操作步骤编制:

首先将手形光标按上述方法设置为全局性的动态鼠标光标:


wc.hCursor = hCurh;


然后注册相应窗口的窗口类,在该窗口函数中对WM_MOUSEMOVE消息进行如下处理:
1.获取鼠标光标的屏幕位置;

2.判断鼠标光标在特定区域内,则设置相应光标形状并设置标志;

3.判断鼠标光标移出特定位置则清除标志并恢复原来光标形状。

程序代码如下:


POINT pt;


RECT rt;


BOOL iFlag;


case WM_MOUSEMOVE:


pt=MAKEPOINT(IParam);//光标位置


if(PtInRect(&rt,pt)){


//在特定区域设置鼠标光标


iFlaq=TRUE;


setCursor(hCurm);


} else if(iFlag==TRUE){


iFlag=FALSE;


SetCursor(hCurh);


}


break;

上述特定客户区域内的动态鼠标光标虽然具有略微的抖动问题,但由于一般情况下的特定客户区域都比较小,所以这种现象也并不明显,完全可以满足客户程序的需要。如果客户程序存在多个特定区域需要不同形状的鼠标光标,只需建立多个用户光标源文件,并进行多个特定区域判断即可,有兴趣的读者可以自行扩充。

站内文章搜索 高级搜索
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
     directx 图形接口指南(…
     win2k下的api函数的拦截
     用crypto  api  实现公钥…
     根据别人的md5源码封装的…
     vc中使用gdi+合并jpg图片
     document/view的交互 --…
     windows下的函数hook技术
     windows api函数大全一
     用vc 6.0实现串行通信的…
     vc++技术内幕(第四版)…
  • Java Swing实现俄罗斯方块

  • Struts2学习:在struts2中集…

  • weblogic 9.1的domain配置my…

  • java中final用法

  • 浅析Spring框架下PropertyPl…

  • SPRING+STRUTS+HIBERNATE登录…

  • 摘:主题:   using springmo…

  • jsp重定向forward和sendRedi…

  • struts异常_does not start …

  • 在spring MVC中配置多个视图

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    网络学院©2007 www.23book.net
    为您提供web编程,vb编程,vc编程,服务器架设管理,数据库设计等方面的知识 站长:David