#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
Global Const $b_STM_SETIMAGE = 0x0172, $b_STM_GETIMAGE = 0x0173
Global $ahPic[2] = ['\usa.png', '\ru.png'], $hImage, $hGui, $iPic, $aSize, $aMsg[2] = ['england', 'russian'], $iNum = 0
_GDIPlus_Startup()
For $i = 0 To 1
$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & $ahPic[$i])
If @error Then Exit $i + 1
If Not IsArray($aSize) Then $aSize = _GDIPlus_ImageGetDimension($hImage)
$ahPic[$i] = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
_GDIPlus_BitmapDispose($hImage)
$hImage = 0
If Not $ahPic[$i] Then Exit $i + 3
Next
If Not IsArray($aSize) Then Exit 5
_GDIPlus_Shutdown()
$hGui = GUICreate('Test', 200, 200)
$iPic = GUICtrlCreatePic('', (200 - $aSize[0]) / 2, 50, $aSize[0], $aSize[1])
GUICtrlSetCursor($iPic, 0)
GUICtrlSendMsg($iPic, $b_STM_SETIMAGE, 0, $ahPic[$iNum])
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $iPic
$iNum = Number(Not $iNum)
$hImage = GUICtrlSendMsg($iPic, $b_STM_GETIMAGE, 0, 0)
If $hImage Then _WinAPI_DeleteObject($hImage)
$hImage = 0
GUICtrlSendMsg($iPic, $b_STM_SETIMAGE, 0, $ahPic[$iNum])
MsgBox(64, 'Info', $aMsg[$iNum], 0, $hGui)
EndSwitch
WEnd
For $i = 0 To 1
_WinAPI_DeleteObject($ahPic[$i])
Next
;~ From GDIP.au3
Func _GDIPlus_ImageGetDimension($hImage)
Local $aSize[2], $aResult
$aResult = DllCall($ghGDIPDll, 'uint', 'GdipGetImageDimension', 'hwnd', $hImage, 'float*', 0, 'float*', 0)
If @error Then Return SetError(@error, @extended, -1)
$GDIP_STATUS = $aResult[0]
If $GDIP_STATUS Then Return -1
$aSize[0] = $aResult[2]
$aSize[1] = $aResult[3]
Return $aSize
EndFunc ;==>_GDIPlus_ImageGetDimension