大佬教程收集整理的这篇文章主要介绍了c – 获取常见文件类型的图标,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
有人可以告诉我我该怎么办? (vc中可用的方法需要用户给出需要图标的文件的路径,我无法访问任何此类文件)
谢谢.
您可以通过与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 image SHGetFileInfo( szFilename,FILE_ATTRIBUTE_NORMAL,&shfi,sizeof(SHFILEINFO),SHGFI_USEFILEATTRIBUTES | SHGFi_iCON | SHGFI_LARGEICON); // Load a System small icon image SHGetFileInfo( szFilename,SHGFI_USEFILEATTRIBUTES | SHGFi_iCON | SHGFI_smaLLICON); // Load a SHell Large icon image SHGetFileInfo( szFilename,SHGFI_USEFILEATTRIBUTES | SHGFi_iCON | SHGFI_SHelLICONSIZE); // Load a SHell small icon image SHGetFileInfo( szFilename,SHGFI_USEFILEATTRIBUTES | SHGFi_iCON | SHGFI_SHelLICONSIZE | SHGFI_smaLLICON);
如果你想画一个这样的图标,可以使用这样的东西:
// Draw it at its native size DrawIconEx( hDC,nLeft,nTop,hIcon,NULL,DI_NORMAL ); // Draw it at the System Large size DrawIconEx( 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;
以上是大佬教程为你收集整理的c – 获取常见文件类型的图标全部内容,希望文章能够帮你解决c – 获取常见文件类型的图标所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。