我正在用VB.NET创建一个文件管理器。我在我的应用程序的项目资源中包含了一些图标。如何让我的用户使用VB.NET中包含的图标更改桌面,文档等文件的图标?
答案 0 :(得分:2)
“通过上述基础设施并支持最复杂的所有资源,版本资源结构,可以将库扩展到二十多种其他已知资源类型之一。我们已经开始使用图标。
将库扩展为支持图标意味着实现图标存储的数据结构并连接ResourceInfo回调。当ResourceInfo遇到类型为14的资源(RT_GROUP_ICON)时,它会创建一个IconDirectoryResource类型的对象。后者创建一个IconResource,它加载一个DeviceIndependentBitmap。
•IconDirectoryResource表示RT_GROUP_ICON,一组图标资源。
•IconResource表示带有一个或多个图像的单个RT_ICON图标。
•DeviceIndependentBitmap不是资源,而是以图标资源定义的偏移量嵌入文件中的原始数据,表示.bmp格式的单个图标位图。
为了将.ico文件中的现有图标嵌入到可执行文件(.exe或.dll)中,我们加载.ico文件并将其转换为IconDirectoryResource。 .ico文件中的结构类似于可执行文件中图标的结构。唯一的区别是可执行标头存储图标ID,而.ico标头包含图标数据的偏移量。有关实现的详细信息,请参阅IconFile和IconFileIcon类。将IconDirectoryResource写入目标文件,然后单独写入每个图标资源。请注意,当前实现将替换可执行文件中具有相同Id的图标,但如果您存储的图标图像少于之前的数字,则不会删除旧图标 - 这可能应该是因为这些图标变成孤立的。
将库扩展到图标的简易性验证了我们的初始设计模型。“
取自Ranhiru Cooray的链接,以便于查看。归功于他。