创建资源位描述的图标或光标.
#Include <WinAPIEx.au3>
_WinAPI_CreateIconFromResourceEx ( $pData, $iSize [, $fIcon [, $xDesired [, $yDesired [, $iFlags]]]] )
$pData | 图标或光标的资源位.通常调用 _WinAPI_LookupIconIdFromDirectoryEx() 与 _WinAPI_LoadResource() 函数加载 and _WinAPI_LoadResource() functions. |
$iSize | 字节大小,位设置由 $pData 参数值指定. |
$fIcon | [可选参数] 确定创建图标或光标.有效值: TRUE - 创建图标. (默认) FALSE - 创建光标. |
$xDesired | [可选参数] 图标或光标的宽度像素值. 如果次参数为 0,函数使用系统度量值设置的宽度. |
$yDesired | [可选参数] 图标或光标的高度像素值. 如果次参数为 0,函数使用系统度量值设置的高度. |
$iFlags | [可选参数] 参数可以是一或多个下列值: $LR_DEFAULTCOLOR --- 使用默认颜色格式 $LR_DEFAULTSIZE --- 如果 $xDesired 或 $yDesired 设置为 0,光标或图标得宽(高)度由系统度量值确定 $LR_MONOCHROME --- 创建单色图标或光标 $LR_SHARED --- 如果图标或光标多次创建,则共享图标或光标句柄 |
成功: | 返回图标或光标的句柄. |
失败: | 返回 0,设置 the @error 为非 0 值. |
在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