55x55 Button aber viel kleine Icons....

  • Hallo,
    ein 55x55 Button:

    global $Button1 = GUICtrlCreateButton ("", 1,1, 55, 55, $BS_ICON)
    GUICtrlSetImage (-1, "icons.dll", 7, 4)

    Das Icon soll auch im format 55x55 angezeigt werden.
    Es wird aber nur viel kleiner angezeigt...

    Kann mir einer helfen?

    Viele Grüße
    Gespenst

  • Bei Vista kann ich sie aber so anzeigen lassen:

    -- icon entfernt, damit mir das keiner klaut ;) ---

    3 Mal editiert, zuletzt von Gespenst (26. Juni 2008 um 08:20)

  • Du kannst Icons nur in der Größe darstellen, in der diese auch in der .dll Datei vorhanden sind.
    Wenn es denn unbedingt 55x55 sein muss, dann must Du dir das selber basteln mit z.B. Microangelo.
    Eine Standardgröße ist das nicht.
    Das hab ich noch in der engl. Hilfe dazu gefunden:

    Zitat

    The first icon resolution will be used in a multi icon resolution file. I.E. if a 128x128 is the first resolution and the control is 64x64 the image will be truncated.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Danke für deine Antwort.
    Ich habe meine Icon mit diesem Programm jetzt mal auf 55x50 gesetzt. Danach mit Resource Hacker in die dll übernommen.
    Leider bleibt die größe die selbe. Du schreibst das die Icons abgeschnitten werden wenn Control nicht richtig eingestellt ist.
    Aber wie kann ich den control richtig einstellen? Damit 55x50 angezeigt wird?
    Viele Grüße
    Gespenst

  • Damit ist in der Hilfe gemeint, wenn der erstellte Button kleiner ist, als das anzuzeigende Icon,
    wird der überstehende Teil des Icons einfach abgeschnitten.
    Ich denke mal begonnen wird mit dem Setzen des Icons oben links.

    Warum Dein Icon nicht korrekt angezeigt wird kann ich leider so von hier aus nicht sagen.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • wie gesagt, ich kenne die dll nicht und was Du damit gemacht hast...
    versuch's vielleicht mal mit einer bmp-Datei...

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • so dann also:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    GUICreate("My GUI") ; will create a dialog box that when displayed is centered
    global $Button1 = GUICtrlCreateButton ("", 1,1, 80, 80, $BS_BITMAP)
    GUICtrlSetImage (-1, @ScriptDir&"\Bild.bmp")
    GUISetState (@SW_SHOW) ; will display an empty dialog box

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

    ; Run the GUI until the dialog is closed
    While 1
    $msg = GUIGetMsg()

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    Wend

    [/autoit]


    Das Bild in das selbe Verzeichnis kopieren wo das Script liegt und ab geht die Post...

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Hi Leute, das ist auch die einzige Möglichkeit die Ich kenne.
    In Vista gibt es die Icon bis 128x128 glaube ich. aber wie Schnuffel schon gesagt hat es muss in der Größe hinterlegt sein.

    MfG
    Der_Doc

  • Das Problem liegt im Aufbau der Funktion, die das Icon lädt. Es wird das erste Icon genommen, nicht das, das in der Größe am besten passt. Also:
    Icon1: Größen 128x128, 32x32, 64x64 -> Icon 128x128 wird genommen
    Icon2: Größen 32x32, 128,128, 16x16 -> Icon 32x32 wird genommen.

  • und jetzt war ich immer der Meinung,
    dass die Icons Ihrer Größe nach abgelegt werden...
    also 16x16, 32x32, 48 x 48, 64 x 64, 128,128...

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Nö, schau dir mal shell32 mit Reshacker an :). Um die großen Icons muss man sich selber künnern, z.B.:

    Spoiler anzeigen
    [autoit]

    #include <WinApi.au3>

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

    #include <ButtonConstants.au3>
    #include <GUIConstants.au3>

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

    #region - GUI Create
    GUICreate('df')
    $button1 = GUICtrlCreateButton("f",10,10,50,50,$BS_ICON)

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

    $button2 = GUICtrlCreateButton("f",70,10,50,50,$BS_ICON)
    GUICtrlSetImage(-1,@SystemDir & "\Shell32.dll",14)
    GUISetState()
    #endregion

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

    $file = @SystemDir & "\Shell32.dll"

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

    $w=48
    $h=48
    $icon = 14
    $handle = _WinAPI_LoadLibraryEx($file,0x00000020)
    $hicon = _WinAPI_LoadImage($handle,"#"&$icon,1,$w,$h,0)
    _SetIconToButton($button1,$hicon)
    ;~ _WinAPI_DestroyIcon($hicon)
    _WinAPI_FreeLibrary($handle)

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

    #region - GUI SelectLoop
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    #endregion

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

    Func _SetIconToButton($CtrlId, $hBitmap,$setStyle=1)
    Local Const $BM_SETIMAGE = 0xF7
    Local Const $IMAGE_ICON = 1
    Local Const $SS_ICON = 0x3

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

    Local $hWnd = GUICtrlGetHandle($CtrlId)
    If $hWnd = 0 Then Return SetError(1, 0, 0)

    Local $oldBmp = DllCall("user32.dll", "hwnd", "SendMessage", "hwnd", $hWnd, "int", $BM_SETIMAGE, "int", $IMAGE_ICON, "int", $hBitmap)
    If @error Then Return SetError(4, 0, 0)
    If $oldBmp[0] <> 0 Then _WinAPI_DeleteObject($oldBmp[0])
    Return 1
    EndFunc

    [/autoit]
  • Danke. Jetzt geht es. Gibt es auch eine Möglichkeit, das bei dem Drauf zeigen mit dem Mauszeiger ein Hinweiß kommt (Tooltip? In html würde ich bei bildern alt nehmen... sowas eben)

  • na dann such mal nach ToolTip in der Hilfe...
    ganz heiß:)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Eine Frage habe ich noch bzg. der Icons in der dll: gibt es keine Möglichkeit die Icons so in die Dll zu importieren das sie direkt 48x48 haben? Oder gibt es nur die Möglichkeit von progandy?

  • also ich hatte da auch mal mit experimentiert und meine Lösung war...
    ich hab mir eine dll-Datei gesucht, die möglichst nur ein Icon enthält.
    Dann hab ich mir mit Microangelo mein Icon erstellt in 48x48 z.B.
    Dann hab ich das original Icon ausgetausch gegen mein Icon.
    Mit den Tools (ich weiß jetzt nicht mehr genau welches der beiden...)
    ResHacker und Microangelo hab ich dann dafür gesorgt, dass das Icon nur in der einen Größe in der Datei ist.
    In AutoIt dieses Icon dann mit seinem Ordinal-Namen aus der dll angesprochen und voilá.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)