当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 给你的应用程序添加动态鼠标

VC++
用 auto_ptr 类模板帮助动态内存管理
走近 STL
一步一步学STL标准模板库
使用 <multimap> 库创建重复键关联容器
使用 <map> 库创建关联容器
用 vectors 改进内存的再分配
用函数模板实现和优化抽象操作
STL 字符串类与 UNICODE 及其它......
如何在Dll中导出STL类
再谈“在STL列表(Lists)中插入不同类型的对象”
使用::std::vector<>作为管理动态数组的优先选择
三种常见中文内码的转换方法
JNI 中文处理问题小结
构建 GB2312 汉字库的 unicode 码表
正则表达式简介
在非MFC程序中引用CString
UTF-8与GB2312之间的互换
宽字符标量L"xx"在VC6.0/7.0和GNU g++中的不同实现
用VC++设计语法编辑器
C语言中对时间和日期的处理

VC++ 中的 给你的应用程序添加动态鼠标


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 74 ::
收藏到网摘: n/a

给你的应用程序添加动态鼠标
作者:魏镇江

下载本文示例源代码


本文程序运行效果图

鼠标是一个应用程序与用户交互的主要手段,因此如果在应用程序里能显示一些比较“酷”的鼠标的话,无疑能增加软件的人气值。但是我们一般情况下用VC++都只能调用系统提供的鼠标或生成一些静态的鼠标,怎么才能生成及利用动态鼠标呢?
幸好Visual C++已为我们准备好了一个很好的编辑动态鼠标的工具AniEdit,并且还提供了它的全部原代码。检索一下VC++安装盘的DevStudio\VC\Samples\SDK\SDKTOOLS目录,你就会发现它的。
你可以利用VC++生成一个Win32 Application,然后用Add Files to Project命令将所有原代码加入该项目,编译之后就可得到AniEdit。

当然,要自己制作动态鼠标的话,除了AniEdit之外,还需要另外一个工具ImagEdit。VC++也提供了它的全部原代码。它位于与AniEdit同样的目录下,请与AniEdit同样的方法编译并得到ImagEdit。

对于AniEdit的使用方法简述如下:程序启动后,左边是动态鼠标每帧的画面,右边上端可设置每帧的显示时间,下端是动态鼠标预览。
若你要改动某一帧的画面,先选中它,然后选择菜单Edit|Edit Frame...,于是启动了ImagEdit,对单帧画面进行编辑,改完之后保存退出。
若要增加一帧画面,可选择Edit|New Frame...,注意正确设置热点。
在使用AniEdit之前,你也可以先利用AniEdit打开Windows目录下的Globe.ani文件,大致了解一下是怎么回事?




那么有了动态鼠标文件之后,又怎么在VC++中调用呢?通过以下几行简单的代码就可以轻松利用动态鼠标。
首先在类中增加成员变量m_hAniCursor,然后在构造函数中赋空值,
void CSampleView::CSampleView(){m_hAniCursor = NULL;}
再利用LoadCursorFromFile()载入动态鼠标文件:
void CSampleView::OnInitialUpdate(){//推荐在OnInitialUpdate或OnInitialDialog//中载入动态鼠标文件...if(m_hAniCursor == NULL)m_hAniCursor = LoadCursorFromFile("d:\\path\\sample.ani");...}
然后在需要改变鼠标的地方调用SetCursor()。推荐截取WM_SETCURSOR消息,然后修改OnSetCursor()函数。
BOOL CAboutDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) {// TODO: Add your message handler code here and/or call defaultif(m_hAniCursor!=NULL)SetCursor(m_hAniCursor);/*orif(m_hAniCursor!=NULL)SetClassLong(GetSafeHwnd(), GCL_HCURSOR, (LONG)m_hAniCursor);*/return TRUE;//return CDialog::OnSetCursor(pWnd, nHitTest, message);}
再编译程序并运行,你就可以得到一双你梦寐以求的闪动的大眼睛或一只翩翩起舞的蝴蝶,是不是很酷?