Icon + Text im Button, und es geht doch

  • Moin zusammen,

    habe heute durch Zufall im englischen Forum von autoitscript.com ein Thread dazu gefunden, denke es wird auch hier viele interesseiren :party4:

    Ich hänge einfach mal die Beispiel Datei mit an. Das Script ist von Holger Kotsch und nicht von mir geschrieben!


    Mfg

    Analyzer

  • Zitat

    Original von th.meger
    Hi,

    hast du es mal mit eigenen Bilder ausprobiert?

    So long,

    Mega

    Klar warum nicht, wo sollen den jetzt das Problem dabei sein?

    Man kann doch anstatt:

    $icon1 = GUICtrlCreateIcon("shell32.dll", 23, 25, 25, 16, 16)

    auch einfach:

    $icon1 = GUICtrlCreateIcon("Anzeige.ico", "", 25, 25, 16, 16)

    nehmen und schon hat man sein eigenes Icon da mit drin!

    Mfg

    Analyzer

  • Falls es noch jmd. int., unter bzw. ab XP unterstützen diese Schaltknopf-Steuerelemente *g* auch sogenannte Bilder-Listen (engl. Image_List):
    Hier mal ein Codeschnipsel bzw. Test:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $ILC_MASK = 0x0001
    Global Const $ILC_COLOR32 = 0x0020

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $BCM_FIRST = 0x1600
    Global Const $BCM_SETIMAGELIST = $BCM_FIRST + 0x0002

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $BUTTON_IMAGELIST_ALIGN_LEFT = 0
    Global Const $BUTTON_IMAGELIST_ALIGN_RIGHT = 1
    Global Const $BUTTON_IMAGELIST_ALIGN_TOP = 2
    Global Const $BUTTON_IMAGELIST_ALIGN_BOTTOM = 3
    Global Const $BUTTON_IMAGELIST_ALIGN_CENTER = 4 ; Doesn't draw text

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("Colored button")

    [/autoit] [autoit][/autoit] [autoit]

    $btn1 = GUICtrlCreateButton("Button1", 10, 10, 90, 25)
    Button_AddIcon($btn1, "shell32.dll", 6, $BUTTON_IMAGELIST_ALIGN_LEFT)

    [/autoit] [autoit][/autoit] [autoit]

    $btn2 = GUICtrlCreateButton("Button2", 10, 50, 90, 25)
    Button_AddIcon($btn2, "shell32.dll", 21, $BUTTON_IMAGELIST_ALIGN_RIGHT)

    [/autoit] [autoit][/autoit] [autoit]

    $btn3 = GUICtrlCreateButton("Button3", 10, 90, 50, 50)
    Button_AddIcon($btn3, "shell32.dll", 32, $BUTTON_IMAGELIST_ALIGN_TOP)

    [/autoit] [autoit][/autoit] [autoit]

    $btn4 = GUICtrlCreateButton("Button4", 10, 140, 50, 50)
    Button_AddIcon($btn4, "shell32.dll", 14, $BUTTON_IMAGELIST_ALIGN_BOTTOM)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $Msg = GUIGetMsg()
    If $Msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Exit

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func Button_AddIcon($nID, $sIconFile, $nIconID, $nAlign)
    Local $hIL = ImageList_Create(16, 16, BitOr($ILC_MASK, $ILC_COLOR32), 0, 1)

    Local $stIcon = DllStructCreate("int")
    ExtractIconEx($sIconFile, $nIconID, DllStructGetPtr($stIcon), 0, 1)

    ImageList_AddIcon($hIL, DllStructGetData($stIcon, 1))
    DestroyIcon(DllStructGetData($stIcon, 1))

    Local $stBIL = DllStructCreate("dword;int[4];uint")

    [/autoit] [autoit][/autoit] [autoit]

    DllStructSetData($stBIL, 1, $hIL)

    DllStructSetData($stBIL, 2, 1, 1)
    DllStructSetData($stBIL, 2, 1, 2)
    DllStructSetData($stBIL, 2, 1, 3)
    DllStructSetData($stBIL, 2, 1, 4)

    [/autoit] [autoit][/autoit] [autoit]

    DllStructSetData($stBIL, 3, $nAlign)

    GUICtrlSendMsg($nID, $BCM_SETIMAGELIST, 0, DllStructGetPtr($stBIL))
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func ImageList_Create($nImageWidth, $nImageHeight, $nFlags, $nInitial, $nGrow)
    Local $hImageList = DllCall('comctl32.dll', 'hwnd', 'ImageList_Create', _
    'int', $nImageWidth, _
    'int', $nImageHeight, _
    'int', $nFlags, _
    'int', $nInitial, _
    'int', $nGrow)
    Return $hImageList[0]
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func ImageList_AddIcon($hIml, $hIcon)
    Local $nIndex = DllCall('comctl32.dll', 'int', 'ImageList_AddIcon', _
    'hwnd', $hIml, _
    'hwnd', $hIcon)
    Return $nIndex[0]
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func ImageList_Destroy($hIml)
    Local $bResult = DllCall('comctl32.dll', 'int', 'ImageList_Destroy', _
    'hwnd', $hIml)
    Return $bResult[0]
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func ExtractIconEx($sIconFile, $nIconID, $ptrIconLarge, $ptrIconSmall, $nIcons)
    Local $nCount = DllCall('shell32.dll', 'int', 'ExtractIconEx', _
    'str', $sIconFile, _
    'int', $nIconID, _
    'ptr', $ptrIconLarge, _
    'ptr', $ptrIconSmall, _
    'int', $nIcons)
    Return $nCount[0]
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func DestroyIcon($hIcon)
    Local $bResult = DllCall('user32.dll', 'int', 'DestroyIcon', _
    'hwnd', $hIcon)
    Return $bResult[0]
    EndFunc

    [/autoit]