Что нового

[Элементы GUI] Как использовать ресурсы в данном случае? (Случай внутри)

Tech

Новичок
Сообщения
12
Репутация
1
Здравствуйте, я решил немного персонализировать Button, но не знаю как картинку запихнуть в ресурсы и оттуда вызывать. (способ из FAQ не работает в данном случае)
Код:
$CryptBtn = GUICtrlCreateButton("Зашифровать", 210, 135, 85, 21, $WS_BORDER)

$CrBtnImg = _GUIImageList_Create(85, 21, 5, 1)
_GUIImageList_AddBitmap($CrBtnImg, @ScriptDir & '\1.bmp')
_GUIImageList_AddBitmap($CrBtnImg, @ScriptDir & '\2.bmp')
_GUIImageList_AddBitmap($CrBtnImg, @ScriptDir & '\3.bmp')
_GUIImageList_AddBitmap($CrBtnImg, @ScriptDir & '\1.bmp')
_GUIImageList_AddBitmap($CrBtnImg, @ScriptDir & '\1.bmp')
_GUIImageList_AddBitmap($CrBtnImg, @ScriptDir & '\1.bmp')


_GUICtrlButton_SetImageList($CryptBtn, $CrBtnImg, 4)

Можно пример использование ресурсов в данном случае?
Заранее спасибо!


Добавлено:
Сообщение автоматически объединено:

АПчхи, актуально.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
Tech,
Вы поленились написать полный рабочий код, не прикрепили файлы *.bmp, и какой помощи Вы ждете?
 
Автор
T

Tech

Новичок
Сообщения
12
Репутация
1
Мне нужен пример вообще, а не под этот код.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Вместо AddBitmap используйте эту функцию:
http://autoit-script.ru/autoit3_docs/libfunctions/_guiimagelist_add.htm

Сами битмапы с ресурсов можно получить к примеру вот так:
Код:
$hImage = _LoadResourceImage( _WinAPI_GetModuleHandle(0), Type, Name )

Func _LoadResourceImage($lri_instance, $sResType, $sResName)
	Local $hInfo, $hData, $iSize, $pData
	Local $hMem, $pMem, $hStream, $hImage

	$hInfo = _WinAPI_FindResource($lri_instance, $sResType, $sResName)
	$hData = _WinAPI_LoadResource($lri_instance, $hInfo)
	$iSize = _WinAPI_SizeOfResource($lri_instance, $hInfo)
	$pData = _WinAPI_LockResource($hData)
	If @error Then _
		Return SetError(1, 0, 0)

	$hMem = DllCall("kernel32.dll", "ptr", "GlobalAlloc", "uint", 2, "ulong_ptr", $iSize)
	If @error Then _
		Return SetError(1, 0, 0)

	$pMem = DllCall("kernel32.dll", "ptr", "GlobalLock", "ptr", $hMem[0])
	If @error Then _
		Return SetError(1, 0, 0)

	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)

	$hImage = DllCall("gdiplus.dll", "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "ptr*", 0)
	If (@error) Or ($hImage[0]) Or (Not $hImage[2]) Then _
		$hImage = 0

	DllCall("kernel32.dll", "ptr", "GlobalFree", "ptr", $hMem[0])
	If Not IsArray($hImage) Then _
		Return SetError(1, 0, 0)

	Return $hImage[2]
EndFunc ;==>_LoadResourceImage
 
Верх