Что нового

[Элементы GUI] Кнопка с PNG иконкой

Entropy

Новичок
Сообщения
3
Репутация
0
Камрады! Стыдно признаться в своей криворукости, но не выходит у меня каменный цветочек. :(
AutoIT 3.3.8, последнюю версию WinAPIEx скачал, и все равно отлуп идет:

1.au3(38,55) : WARNING: $BI_RGB: possibly used before declaration.
DllStructSetData($tBIHDR, 'biCompression', $BI_RGB)
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Нужно добавить

Код:
#Include <APIConstants.au3>
 

JIeo_NEED

Прокачиваю знание AutoIt
Сообщения
17
Репутация
2
Народ, у меня ошибка... Скорее всего, из за криворукости, но...


Код:
>"C:\Program Files\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\Users\JIeo_NEED\Desktop\launcher.au3"
C:\Users\JIeo_NEED\Desktop\launcher.au3 (68) : ==> Variable used without being declared.:
$Button = GUICtrlCreateButton('', 1, 1, 64, 64, $BS_BITMAP)
$Button = GUICtrlCreateButton('', 1, 1, 64, 64, ^ ERROR
>Exit code: 1    Time: 1.044
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
JIeo_NEED,
Добавьте
Код:
#include <ButtonConstants.au3>
 

JIeo_NEED

Прокачиваю знание AutoIt
Сообщения
17
Репутация
2
Ох! Огромное спасибо, проглядел его...


Теперь ошибку не выдает, но на кнопке изображения нет...

Код:
$Button = GUICtrlCreateButton('', 1, 1, 10, 10, $BS_BITMAP)
Это у меня среди других элементов GUI.


Код:
_GDIPlus_Startup()
$hPng = _GDIPlus_ImageLoadFromFile(@ScriptDir & '\button.png')
$hBitmap = _GDIPlus_DIBitmapCreateFromBitmap($hPng)
_GDIPlus_ImageDispose($hPng)
_GDIPlus_ShutDown()

;GUICtrlSendMsg(-1, $BM_SETIMAGE, $IMAGE_BITMAP, $hBitmap)
GUICtrlSendMsg(-1, 0x00F7, 0, $hBitmap)
GUISetState()

Do
Until GUIGetMsg() = -3

Func _GDIPlus_DIBitmapCreateFromBitmap($hBitmap)

    Local $tBIHDR, $tMap, $pBits, $hImage, $hResult, $Width, $Height

    $Width = _GDIPlus_ImageGetWidth($hBitmap)
    $Height = _GDIPlus_ImageGetHeight($hBitmap)
    If ($Width < 1) Or ($Height < 1) Then
        Return 0
    EndIf
    $hImage = _GDIPlus_BitmapCloneArea($hBitmap, 0, 0, $Width, $Height, $GDIP_PXF32ARGB)
    $tMap = _GDIPlus_BitmapLockBits($hImage, 0, 0, $Width, $Height, $GDIP_ILMREAD, $GDIP_PXF32ARGB)
    $tBIHDR = DllStructCreate($tagBITMAPINFOHEADER)
    DllStructSetData($tBIHDR, 'biSize', DllStructGetSize($tBIHDR))
    DllStructSetData($tBIHDR, 'biWidth', $Width)
    DllStructSetData($tBIHDR, 'biHeight', $Height)
    DllStructSetData($tBIHDR, 'biPlanes', 1)
    DllStructSetData($tBIHDR, 'biBitCount', 32)
    DllStructSetData($tBIHDR, 'biCompression', $BI_RGB)
    $hResult = _WinAPI_CreateDIBSection(0, $tBIHDR, $DIB_RGB_COLORS, $pBits)
    If Not @error Then
        _WinAPI_SetBitmapBits($hResult, $Width * $Height * 4, DllStructGetData($tMap, 'Scan0'))
    EndIf
    _GDIPlus_BitmapUnlockBits($hImage, $tMap)
    _GDIPlus_BitmapDispose($hImage)
    Return $hResult
EndFunc   ;==>_GDIPlus_DIBitmapCreateFromBitmap
А это в самом конце документа после кучи функций. Оно может с ними как-нибудь конфликтовать?

А еще я много include напихал.



button.png - просто черный квадрат 10x10 из паинта. Просто тестировать пока чтобы.
 
Верх