c – 获取常见文件类型的图标

c – 获取常见文件类型的图标,第1张

概述我想在我的dll中获得常见文件类型图标.我正在使用vc.我只有文件的文件扩展名和mime类型,我想要获取该文件的图标. 有人可以告诉我我该怎么办? (vc中可用的方法需要用户给出需要图标的文件的路径,我无法访问任何此类文件) 谢谢. Shell API 您可以通过与SHGFI_USEFILEATTRIBUTES标志一起调用SHGetFileInfo()从shell获取它们 – 此标志允许例程在不 我想在我的dll中获得常见文件类型的图标.我正在使用vc.我只有文件的文件扩展名和mime类型,我想要获取该文件的图标.

有人可以告诉我我该怎么办? (vc中可用的方法需要用户给出需要图标的文件的路径,我无法访问任何此类文件)

谢谢.

解决方法 Shell API

您可以通过与SHGFI_USEfileATTRIBUTES标志一起调用SHGetFileInfo()从shell获取它们 – 此标志允许例程在不要求传入的文件名实际存在的情况下工作,因此如果您的文件扩展名只是构成文件名,请附加扩展名,并传入.

通过组合其他标志,您将可以检索:

>系统配置确定的大小图标:SHGFI_ICON | SHGFI_LARGEICON或SHGFI_ICON | SHGFI_SMALliCON
>由shell配置确定的一个大或小的图标:SHGFI_ICON | SHGFI_LARGEICON | SHGFI_SHELliCONSIZE或SHGFI_ICON | SHGFI_SMALliCON | SHGFI_SHELliCONSIZE
> shell图像列表中图标的索引以及相应的图像列表:SHGFI_SYSICONINDEX
>存储图标的实际模块的路径和文件名(以及该模块中的图标索引):SHGFI_ICONLOCATION

例子

// Load a System Large icon imageSHGetfileInfo( szfilename,file_ATTRIBUTE_norMAL,&shfi,sizeof(SHfileINFO),SHGFI_USEfileATTRIBUTES | SHGFI_ICON | SHGFI_LARGEICON);// Load a System Small icon imageSHGetfileInfo( szfilename,SHGFI_USEfileATTRIBUTES | SHGFI_ICON | SHGFI_SMALliCON);// Load a Shell Large icon imageSHGetfileInfo( szfilename,SHGFI_USEfileATTRIBUTES | SHGFI_ICON | SHGFI_SHELliCONSIZE);// Load a Shell Small icon imageSHGetfileInfo( szfilename,SHGFI_USEfileATTRIBUTES    | SHGFI_ICON | SHGFI_SHELliCONSIZE | SHGFI_SMALliCON);

如果你想画一个这样的图标,可以使用这样的东西:

// Draw it at its native sizeDrawIconEx( hDC,nleft,ntop,hIcon,NulL,DI_norMAL );// Draw it at the System Large sizeDrawIconEx( hDC,DI_DEFAulTSIZE | DI_norMAL );// Draw it at some other size (40x40 in this example)DrawIconEx( hDC,40,DI_norMAL );

图标句柄以及文件系统路径可以从SHfileINFO结构获得:

typedef struct _SHfileINFOA{        HICON       hIcon;                      // out: icon        int         iIcon;                      // out: icon index        DWORD       DWAttributes;               // out: SFGAO_ flags        CHAR        szdisplayname[MAX_PATH];    // out: display name (or path)        CHAR        szTypename[80];             // out: type name} SHfileINFOA;

请记住,完成后,您必须将hIcon传递到DestroyIcon(),才能释放获得的图标.

总结

以上是内存溢出为你收集整理的c – 获取常见文件类型的图标全部内容,希望文章能够帮你解决c – 获取常见文件类型的图标所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1247757.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存