文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发C++BuilderWINDOWS下的动态鼠标光标控制
精品推荐
特别推荐
·菜鸟入门 认识C#中的委托和事件
·WINDOWS下的动态鼠标光标控制
热点TOP10
·在 C++ Builder中利用串行通信控件编程
·用Builder C++设计串行口COM1或COM2的读写操作
·Windows多线程间同步事件的控制方法
·用WinSock控件编写网络聊天器
·在C++ Builder中进行DirectX编程(2)
·C++ Builder VCL库函数简介
·用C++ Builder3 制作记事本
·利用C++ Builder 5.0创建用户自己的网上聊天程序
·C++ Builder 中的自画功能
·C++Builder IDE使用技巧与快捷键
·C++ Builder下数据库报表Master/Detail关系功能的实现
·WINDOWS下的动态鼠标光标控制
·菜鸟入门 认识C#中的委托和事件
·C++BUILDER中一些实现界面效果的技巧
·C#动态生成树型结构的Web程序设计
·QuickReport基本知识
·利用C++ Builder开发动画DLL
·BCB中实现全屏幕OpenGL
·C++Builder注册表编程实例详解
·利用C++Builder遍历文件目录

WINDOWS下的动态鼠标光标控制

日期:2007年7月23日 作者: 查看:[大字体 中字体 小字体]


正常情况下的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;

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

(出处:清风网络学院






上一篇:Win95下高精度定时器的实现

下一篇:不规则窗体的应用增加软件的吸引力

WINDOWS下的动态鼠标光标控制 相关文章:
·Windows Vista震撼1600X1200高清壁纸
·“黑客”教你如何远程控制计算机
·WindowsXP超级技巧
·Windows XP的20个超级实用技巧大全
·最全面的WindowsXP修改大全
·让Windows XP系统快10倍
·Windows Vista Ultimate中文旗舰版下载+简单破解(支持迅雷HTTP & BT)
·图文详解 Windows 2003服务器集群安装
·破解windowsXP,window2000的开机密码
·Windows XP鲜为人知的N招实用技巧
WINDOWS下的动态鼠标光标控制 相关软件:
·Windows主题70合一典藏版
·Windows 2003 Server 简体中文企业版(免激活)ISO
·Google Earth 动态卫星地图 汉化版 带我们进入间谍时代 能看见你家院子
·Windows 98简体中文第二版
·Windows XP Service Pack 2简体中文版
·如何加固Windows XP 主机安全
·Windows环境下32位汇编语言程序设计
·Google Earth 动态卫星地图 汉化版 能看见你家院子的车 电信做种
·Windows XP Home Edition SP2简体中文版
·番茄花园 Windows 2000 3 合 1 最终版

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot