我正在尝试检索系统的标准文件夹图标。
答案here确实检索了结构的 hIcon 成员中的图标,但对我来说,它获取的是 [系统] 驱动器图标,而不是文件夹图标。
该结构的 iIcon 成员返回 80,因此我也尝试使用 SHGFI_SYSICONINDEX 来获取相关图像列表,然后使用该 iIcon 成员的 ImageList_GetIcon()...但它也返回了驱动器图标。有趣的是,使用 SHGFI_OPENICON 作为 open 文件夹图像 also 给出 80 - 让我觉得 80 确实是驱动器图标 - 那么为什么它给我那个呢?
我使用的是 Windows 10。这绝对不是我的文件夹图标的样子 - 没有任何奇怪的重新定义。
这是我正在拨打的原始电话(针对图标):
SHGetFileInfo(
_T(""),
FILE_ATTRIBUTE_DIRECTORY,
&sfi, sizeof sfi,
SHGFI_ICON | SHGFI_LARGEICON | SHGFI_USEFILEATTRIBUTES);
sfi.hIcon 以驱动器图标结尾。 无论是否指定 SHGFI_OPENICON,sfi.iIcon 最终都是 80。
我做错了什么吗?
谢谢。
SHGetFileInfo
,
DWORD_PTR SHGetFileInfoW(
[in] LPCWSTR pszPath,
DWORD dwFileAttributes,
[in, out] SHFILEINFOW *psfi,
UINT cbFileInfo,
UINT uFlags
);
如果 uFlags 参数包含 SHGFI_USEFILEATTRIBUTES 标志, 该参数不必是有效的文件名。功能 将继续进行,就好像该文件存在且具有指定的名称一样 在 dwFileAttributes 参数中传递的文件属性。这 允许您通过仅传递以下内容来获取有关文件类型的信息 扩展 pszPath 并传递 FILE_ATTRIBUTE_NORMAL dwFileAttributes.