ExtractIconExA 函数 (shellapi.h)
ExtractIconEx 函数创建从指定可执行文件、DLL 或图标文件中提取的大图标或小图标的句柄数组。
语法
UINT ExtractIconExA(
[in] LPCSTR lpszFile,
[in] int nIconIndex,
[out] HICON *phiconLarge,
[out] HICON *phiconSmall,
UINT nIcons
);
参数
[in] lpszFile
类型: LPCTSTR
指向以 null 结尾的字符串的指针,该字符串指定将从中提取图标的可执行文件、DLL 或图标文件的名称。
[in] nIconIndex
类型: int
指定要提取的第一个图标的从零开始的索引。 例如,如果此值为零,则函数提取指定文件中的第一个图标。
如果此值为 –1 且 phiconLarge 和 phiconSmall 均为 NULL,则该函数将返回指定文件中图标的总数。 如果文件是可执行文件或 DLL,则返回值是RT_GROUP_ICON资源的数量。 如果文件是 .ico 文件,则返回值为 1。
如果此值为负数,并且 phiconLarge 或 phiconSmall 不为 NULL,则函数首先提取其资源标识符等于 nIconIndex 的绝对值的图标。 例如,使用 -3 提取其资源标识符为 3 的图标。
[out] phiconLarge
类型: HICON*
指向图标句柄数组的指针,该数组接收从文件中提取的大图标的句柄。 如果此参数为 NULL,则不会从文件中提取大图标。
[out] phiconSmall
类型: HICON*
指向图标句柄数组的指针,该数组接收从文件中提取的小图标的句柄。 如果此参数为 NULL,则不会从文件中提取小图标。
nIcons
类型: UINT
要从文件中提取的图标数。
返回值
类型: UINT
如果 nIconIndex 参数为 -1,并且 phiconLarge 和 phiconSmall 参数均为 NULL,则返回值为指定文件中包含的图标数。
如果 nIconIndex 参数是 -1 以外的任何值,并且 phiconLarge 或 phiconSmall 不为 NULL,则返回值是从文件成功提取的图标数。
注意
如果函数遇到错误,则返回 UINT_MAX。 在这种情况下,可以调用 GetLastError 来检索错误代码。 例如,如果找不到 lpszFile 指定的文件,而 nIconIndex 参数是 -1 以外的任何值,并且 phiconLarge 或 phiconSmall 不为 NULL,则此函数将返回UINT_MAX。 在这种情况下, GetLastError 返回 ERROR_FILE_NOT_FOUND (2) 。
注解
不再需要它们时,必须通过调用 DestroyIcon 函数来销毁 ExtractIconEx 提取的所有图标。
若要检索大图标和小图标的尺寸,请将此函数与SM_CXICON、SM_CYICON、SM_CXSMICON和SM_CYSMICON标志一起使用。
注意
shellapi.h 标头将 ExtractIconEx 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | shellapi.h |
DLL | Shell32.dll |
API 集 | ext-ms-win-shell-shell32-l1-2-1 (在 Windows 10 版本 10.0.10240 中引入) |