c – 获取常见文件类型的图标
我想在我的dll中获得常见文件类型的图标.我正在使用vc.我只有文件的文件扩展名和mime类型,我想要获取该文件的图标.
有人可以告诉我我该怎么办? (vc中可用的方法需要用户给出需要图标的文件的路径,我无法访问任何此类文件) 谢谢. 解决方法
Shell API
您可以通过与SHGFI_USEFILEATTRIBUTES标志一起调用 通过组合其他标志,您将可以检索: >系统配置确定的大小图标:SHGFI_ICON | SHGFI_LARGEICON或SHGFI_ICON | SHGFI_SMALLICON 例子 // 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; 请记住,完成后,您必须将hIcon传递到 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |