函数参考


_WinAPI_LookupIconIdFromDirectoryEx

搜索适合当前显示设备的图标或光标的数据.

#Include <WinAPIEx.au3>
_WinAPI_LookupIconIdFromDirectoryEx ( $pData [, $fIcon [, $xDesired [, $yDesired [, $iFlags]]]] )

参数

$pData 图标或光标的目录数据.此函数不会验证资源数据.
 如果此参数没有指向有效s的资源数据,
 将导致一般性保护(GP)错误或返回一个未定义值.
$fIcon [可选参数] 指定搜索图标或光标,有效值:
1 - 搜索图标. (默认)
0 - 搜索光标.
$xDesired [可选参数] 图标或光标的宽度像素值.
如果次参数为 0,函数使用系统度量值设置的宽度.
$yDesired [可选参数] 图标或光标的高度像素值.
如果次参数为 0,函数使用系统度量值设置的高度.
$iFlags [可选参数] 参数可以是一或多个下列值:
 $LR_DEFAULTCOLOR --- 使用默认颜色格式
 $LR_MONOCHROME --- 创建单色图标或光标

返回值

成功: 返回最适合当前显示设备的图标或光标的整数资源标识符.
失败: 返回 0,设置 the @error 为非 0 值.

注意/说明

图标加载目录资源文件类型为 $RT_GROUP_ICON (或光标资源类型为 $RT_GROUP_CURSOR),
 并且加载特定图标的整型资源名称.
 本函数返回的整数标识符, 是最适合当前显示设备的图标的资源名称.

相关

详情参考

在MSDN中搜索


示例/演示


#Include <APIConstants.au3>
#Include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)

Global Const $STM_SETIMAGE = 0x0172

Global $hInstance, $hResource, $hData, $pData, $hIcon, $iIcon, $iSize

; 加载 Resources.dll 到内存
$hInstance = _WinAPI_LoadLibraryEx(@ScriptDir & '\Extras\Resources.dll', $LOAD_LIBRARY_AS_DATAFILE)
If Not $hInstance Then
    MsgBox(16, 'Error', @ScriptDir & '\Extras\Resources.dll not found.')
    Exit
EndIf

; 从 Resources.dll 库中加载 RT_GROUP_ICON 资源
$hResource = _WinAPI_FindResource($hInstance, $RT_GROUP_ICON, 1)
$hData = _WinAPI_LoadResource($hInstance, $hResource)
$pData = _WinAPI_LockResource($hData)

; 搜索最接近指定大小 (48x48) 的图标的整数资源名
$iIcon = _WinAPI_LookupIconIdFromDirectoryEx($pData, 1, 48, 48)

; 从 Resources.dll 库加载 RT_ICON 资源
$hResource = _WinAPI_FindResource($hInstance, $RT_ICON, $iIcon)
$iSize = _WinAPI_SizeOfResource($hInstance, $hResource)
$hData = _WinAPI_LoadResource($hInstance, $hResource)
$pData = _WinAPI_LockResource($hData)

; 从资源中创建图标
$hIcon = _WinAPI_CreateIconFromResourceEx($pData, $iSize)

; 从内存中卸载 Resources.dll
_WinAPI_FreeLibrary($hInstance)

; 创建 GUI
GUICreate('MyGUI', 128, 128)
GUICtrlCreateIcon('', 0, 40, 40, 48, 48)
GUICtrlSendMsg(-1, $STM_SETIMAGE, 1, $hIcon)
GUISetState()

Do
Until GUIGetMsg() = -3