Symbol im Kontextmenü

  • Hallo,

    ich habe ein GUI mit einem Kontextmenü erstellt.

    Das funktioniert auch wie gewünscht.

    Nun möchte ich auch ein Symbol vor dem Text im Kontextmenü anzeigen, so wie es bei an vielen Stellen in den Kontextmenüs von Windows auch ist.

    Hier ein einfaches Testscript dazu:

    Gibt es dafür einen extra Befehl in AutoIt, oder muss man sich dafür selber etwas zusammenbasteln?

    MfG:

    BigRox

  • Hi BigRox ,

    ein einfacher Weg, welcher unter Windows 10 und Windows 11 funktioniert ist die Verwendung von Emojis.

    Siehe:

    Vielleicht reicht das ja schon, ansonsten kannst du noch mit Schriften wie Windings usw. arbeiten, dann kannst du einzelne Zeichen (Symbole) als der Zeichentabelle der Schriftart verwenden. Ich persönlich würde den Weg über Emojis (Unicode Icons) gehen - ist einfacher.

    Viele Grüße
    Sven

  • Wenn es ein eigenes Bild sein soll:

    Du kannst bei der Bitmap statt _WinAPI_CreateSolidBitmap eine beliebige Bitmap z.B. mit _GDIPlus_... nutzen.

    Ich hoffe das hilft dir weiter :)

  • Hallo Kanashius,

    dein Script mit _WinAPI_CreateSolidBitmap funktioniert, jedoch habe ich es auch einmal mit einer beliebigen Bitmap probiert und da geht nichts.

    Hier einer meiner Versuche:


    #include-once
    #include <GuiMenu.au3>
    #include <WinAPIGdi.au3>
    #include <GDIPlus.au3>

    Global $hGUI = GUICreate("Example", 400, 300)
    Global $idMenu = GUICtrlCreateContextMenu()
    Global $idMenuItemText = GUICtrlCreateMenuItem("Example", $idMenu)
    GUISetState(@SW_SHOW)

    _GUICtrlMenu_SetItemBmp(GUICtrlGetHandle($idMenu), 0, _GDIPlus_BitmapCreateFromFile(@MyDocumentsDir & "\Testbild.bmp"))
    Do
    Until GUIGetMsg() = -3


    Da mache ich wohl irgendetwas falsch.

    Kannst du mir daher ein Beispiel posten, wie man das richtig macht?

    MfG:

    BigRox

  • Hallo BigRox,

    dein erster Fehler ist, dass du _GDIPlus_StartUp (und _GDIPlus_Shutdown) nicht aufgerufen hast. Wenn etwas nicht funktioniert, schau dir am besten mal die Beispiele zu den Funktionen an.

    Dann gibt es dort eine besonderheit, dass _GUICtrlMenu_SetItemBmp eine HBITMAP haben möchte und keine normale Bitmap. Also vorher nocheinmal umandeln.
    Das ganze sieht dann so aus:

    Ich hab auch gleich ein resize mit eingebaut, da ich vermute, das wirst du auch benutzen wollen ;)

    Ich hoffe das hilft dir weiter, Kanashius :)

  • Hallo Kanashius,

    das Script funktioniert einwandfrei.

    :thumbup:Vielen DANK für die Hilfe :thumbup:

    Übrigens:

    Du hast richtig vermutet, das mit dem resize kann ich auch gebrauchen.

    MfG:

    BigRox

  • Es freut mich BigRox , dass dir Kanashius helfen konnte und es klappt.

    Nur rein aus Neugier: Warum war dir ein eigenes Bild als Piktogramm quasi, denn Kontextmenü Icons sind ja recht klein, so wichtig? Emojis waren nicht ausreichend, da nicht das Richtige dabei ist? Ich bin einfach daran interessiert, was so die Beweggründe und/oder Anwendungsfälle von Leuten so sind. Wie gesgt, rein aus Neugier.

    Viele Grüße

    Sven