Код:
#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <GDIPlus.au3>
#include <Icons.au3>
#include <WinAPIEX.au3>
#include <ButtonConstants.au3>
Global $Form1 = GUICreate("", 575, 247, -1, -1, $WS_POPUP, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST, $WS_EX_LAYERED)), $PicBack[10]
GUISetBkColor(0xFFFFFE)
$PicBack[1] = GUICtrlCreatePic('', 0, 0, 575, 247)
GUICtrlSetState(-1, $GUI_DISABLE)
_WinAPI_SetLayeredWindowAttributes($Form1, 0xFFFFFE, 255)
$Bt_U_L = GUICtrlCreateButton('',155,44,259,33,$BS_BITMAP)
GUICtrlSetImage ($Bt_U_L, $PicBack[2]) ;тут нужно чтобы картинка назначилась кнопке
GUISetState()
If Not @Compiled Then
for $t = 1 to 4
_SetImage($PicBack[$t], @ScriptDir & '\' & $t & ".bmp")
next
Else
$hInstance = _WinAPI_GetModuleHandle(0)
_GDIPlus_Startup()
for $t = 1 to 4
$hImage = _LoadResourceImage($hInstance, 'bmp', $t)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
_GDIPlus_ImageDispose($hImage)
_SetHImage($PicBack[$t], $hBitmap)
_WinAPI_DeleteObject($hBitmap)
next
_GDIPlus_Shutdown()
EndIf
While 1 ;цикл сканирования кнопок
$nMsg = GUIGetMsg()
Switch $nMsg
Case $Bt_U_L
GUICtrlSetImage ($Bt_U_L, $PicBack[3]) ;тут нужно чтобы картинка кнопки изменилась
sleep(500)
exit
EndSwitch
wend
Func _LoadResourceImage($hInstance, $sResType, $sResName, $iResLanguage = 0)
Local $hInfo, $hData, $pData, $iSize, $hMem, $pMem, $hStream, $hImage
If $iResLanguage Then
$hInfo = _WinAPI_FindResourceEx($hInstance, $sResType, $sResName, $iResLanguage)
Else
$hInfo = _WinAPI_FindResource($hInstance, $sResType, $sResName)
EndIf
$hData = _WinAPI_LoadResource($hInstance, $hInfo)
$iSize = _WinAPI_SizeOfResource($hInstance, $hInfo)
$pData = _WinAPI_LockResource($hData)
If @error Then
Return SetError(1, 0, 0)
EndIf
$hMem = DllCall("kernel32.dll", "ptr", "GlobalAlloc", "uint", 2, "ulong_ptr", $iSize)
If @error Then
Return SetError(1, 0, 0)
EndIf
$pMem = DllCall("kernel32.dll", "ptr", "GlobalLock", "ptr", $hMem[0])
If @error Then
Return SetError(1, 0, 0)
EndIf
DllCall("kernel32.dll", "none", "RtlMoveMemory", "ptr", $pMem[0], "ptr", $pData, "ulong_ptr", $iSize)
DllCall("kernel32.dll", "int", "GlobalUnlock", "ptr", $hMem[0])
$hStream = _WinAPI_CreateStreamOnHGlobal($hMem[0])
If @error Then
Return SetError(1, 0, 0)
EndIf
_GDIPlus_Startup()
$hImage = DllCall("gdiplus.dll", "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "ptr*", 0)
If (@error) Or ($hImage[0]) Or (Not $hImage[2]) Then
$hImage = 0
EndIf
_GDIPlus_Shutdown()
DllCall("kernel32.dll", "ptr", "GlobalFree", "ptr", $hMem[0])
If Not IsArray($hImage) Then
Return SetError(1, 0, 0)
EndIf
Return $hImage[2]
EndFunc
Как можно назначить картинку кнопке в этом случае? А потом в ходе работы скрипта, как ее изменить можно?