OverlayIcon 制作流程及注意项
来源:互联网 发布:阿里云搭建vpn云免 编辑:程序博客网 时间:2024/06/05 17:43
为了制作类似SVN的图标覆盖特效,我确实花了一些时间。目前做到的程度是开发的DLL其Release版本可以在XP、Win7上使用。
第一步:
参考How to overlay an icon over existing shell objects in 3 easy steps – CodeProject这篇文章,按步骤做。
这一步做完后,编译会出现:
error C2787: “IShellIconOverlayIdentifier”: 没有与该对象关联的 GUID
这样的错误
第二步:
在MyOverlayIcon.h文件添加
struct _declspec (uuid("987423F4-904A-4ACF-9803-EC28B51C1993"))IShellIconOverlayIdentifier;
//UUID替换为自己工程中的UUID
这样编辑将不会出现错误了。
第三步:
检查注册表
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\]下的项是否超过了15个
如果该键含有太多的SubKey那么也将不会显示,或者仅在资源管理器的左边的树形结构上进行显示。
第四步:
重启Explorer进程,然后右键“刷新”。
第五步:
检查工程的属性->配置属性->C/C++->预处理器->预处理器定义
里面的值要包含:_ATL_NO_UUIDOF(我不知道为什么,但是不写就真的不行)
IShellIconOverlayIdentifier说明三个函数说明:
Shell通过调用IShellIconOverlayIdentifier::GetOverlayInfo请求处理程序图标覆盖的位置。图标覆盖处理程序返回包含覆盖图标的文件的名称,以及他们在文件中的索引。然后,Shell添加这些图标覆盖到系统图像列表。
Shell通过调用IShellIconOverlayIdentifier::GetPriority来确定图标覆盖的优先级。优先级值是从0到100的数字,其中100表示最低优先级。如果有多个图标覆盖被特定文件请求,Shell使用这些值来帮助确定哪个图标覆盖将显示
在绘画一个对象图标之前,Shell传递对象名称到每个图标覆盖处理程序的IShellIconOverlayIdentifier::IsMemberOf方法。图标覆盖处理程序通常与特定文件分组相关。例如,图标覆盖处理程序可能请求一个文件类型的所有成员的一个覆盖,就像一个.myp文件名扩展的所有文件。如果处理程序想要他的图标覆盖被显示,它返回S_OK。然后Shell调用处理程序IShellIconOverlayIdentifier::GetOverlayInfo方法决定哪个图标将显示。
说明:
1. 目前不知道如何调试实现IShellIconOverlayIdentifier接口的DLL。在VS2005下选择Debug模式,启动调试我也输入了C:\windows\explorer.exe进程,但是提示“无法找到explorer.exe的调试信息”。故开发OverlayIcon特效时如何调试是个问题。
2. 为了能在XP上也运行,需要考虑在VS2005中,项目属性->配置属性->常规->ATL的使用选择“静态连接到ATL”。
3. 在Win7上开发时,可以考虑先关掉UAC,不然效果也有可能无法出现。
- OverlayIcon 制作流程及注意项
- OverlayIcon 制作流程及注意项
- OverlayIcon 制作流程及注意项
- 盗版软件的制作流程及制作周期
- css制作流程及标准
- css制作流程及标准
- css制作流程及标准
- css制作流程及标准
- springmvc 工作流程及注意点
- 科技论文写作流程及注意
- 微信支付流程及注意要点
- 网站制作流程及界面交互设计
- 网站制作流程及界面交互设计
- 视频制作需要软件及简单流程
- “系统配置”模块-制作思路及流程
- wordpress主题模板制作流程及标签
- iOS证书及描述文件制作流程
- WebGL数据制作流程及加载
- 带你测试对比深度学习框架!TensorFlow,Keras,PyTorch...哪家强?(附数据集)
- Django系列教程(4)-- 模型中的F对象和Q对象
- 关于百度地图api的使用心得
- C语言的第七天学习
- mysql 远程访问
- OverlayIcon 制作流程及注意项
- c#中DateTimeKind的
- Valgrind 编译及使用
- 如何建立应付暂估明细查询
- CHAP认证原理解析
- Halcon学习笔记之缺陷检测
- 第二十二讲 HashSet和HashMap、迭代器、TreeMap集合、Collections工具类、JDK8之Optional类
- 卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning
- 12月7日云栖精选夜读:特鲁多对话马云:请为加拿大小企业多花一些时间!