如何在NETCF中以编程方式显示/隐藏Windows Mobile内置“工作”动画?
在Windows Mobile中编程显示/隐藏系统内置“正在工作”动画
刚好之前做Windows Mobile开发时折腾过这个需求,系统确实提供了原生API来直接控制那个内置的旋转彩色刷动画,完全不用自己自定义,完美匹配你的需求。下面给你一步步说怎么实现:
前置准备
首先要确保你的项目引入了必要的头文件和链接库:
- 头文件:在代码里添加
#include <aygshell.h> - 链接库:在项目设置里把
aygshell.lib加入链接器的输入依赖(不同IDE的设置路径略有不同,比如VS是在「项目属性 -> 链接器 -> 输入 -> 附加依赖项」里添加)
显示系统“正在工作”动画
直接调用系统API就能启动那个居中的旋转动画:
SHWaitCursor(SHCURSOR_WAIT);
调用这个函数后,系统会自动在屏幕中间显示那个熟悉的彩色旋转刷,不需要你自己处理布局或动画逻辑。
隐藏动画
当你的耗时操作完成后,一定要记得调用下面的代码停止并隐藏动画:
SHWaitCursor(SHCURSOR_STOP);
⚠️ 重要提醒:显示和隐藏必须配对调用,不然动画会一直停留在屏幕上,影响用户正常操作。
进阶技巧:临时暂停/恢复动画
如果你的操作过程中需要临时弹出对话框或者做其他会干扰动画的操作,可以用暂停和恢复的方式,不用完全停止动画:
- 暂停动画:
SHWaitCursor(SHCURSOR_PAUSE); - 恢复动画:
SHWaitCursor(SHCURSOR_RESUME);
兼容性说明
这个API从Windows Mobile 5.0开始就支持,几乎覆盖了所有主流的Windows Mobile版本,不用担心兼容性问题。另外建议尽量在UI线程里调用这些API,避免多线程环境下出现界面异常。
给你个完整的使用示例参考:
#include <aygshell.h> void DoHeavyWork() { // 显示系统加载动画 SHWaitCursor(SHCURSOR_WAIT); // 模拟耗时操作(比如网络请求、数据解析) Sleep(3000); // 操作完成,隐藏动画 SHWaitCursor(SHCURSOR_STOP); }
内容的提问来源于stack exchange,提问作者ZorgoZ
相关产品推荐
相关产品推荐

