_GDIPlus_Buttons UDF

  • Guten Abend


    Es gibt zwar inzwichen einige UDF´s zum erstellen von "HoverButtons", aber allen fehlt das gewisse Etwas.


    Alle die ich bisher gesehen habe schalten direkt um, sobalt man mit dem Mauszeiger über den Button kommt.
    Logisch, da dann einfach per Befehl ein anderes Bild gezeichnet wird.


    Meine Version zeichnet das andere Bild nicht direkt, sondern legt erst einige Halbtransparente Layer über das alte Bild, damit es so zu sagen abgeblendet wird. Erst dann kommt das Zielbild auf die Fläche.


    Dann nutzen einige Versionen die Funktion GuiCtrlCreatePic. (davon bin ich nicht wirklcih überzeugt.)


    Noch ein Manko welches nahezu Alle Solche Funktionen aufweisen: Der Button wird released, wenn man Darauf klickt.
    Das ist Falsch !
    kaum Jemand Achtet darauf, dass Echte Buttons sich auch "eindrücken" lassen, bevor sie "losgehen".


    Dadurch fehlt meißtens auch das Bild, was zwar beim Klick sehr Kurz eingeblendet wird, aber bevor man etwas sehen kann ist direkt schon die Funktion ausgeführt.


    Lange rede Kurzer Sinn.
    Testet bitte die UDF und gebt ggf Verbesserungsvorschläge dazu ab.


    //Eidt: Die GDIPlus Button(2).rar ist die neuere Datei auch wenn sie kleiner ist.//


    mfg
    Mars(i)

  • ich würd nich Mousegetpos sondern Guigetcursorinfo verwenden
    denns sonst entstehen unschöne buggs
    musst halt dan noch überprüfen obs n array is

    $aMouseInfo = Guigetcursorinfo()
    If not IsArray($aMouseInfo) Then Return
    sonst aba recht gut
    auser das man den text auf den buttons nich so gut lesen kann
    oh der text is auf den bildern :D

  • Ich finds ganz gut gelungen.
    Aber ich weiß irgendwie net wie das mit dem Switch .. Case "Button1" funzt.
    Außerdem gibts beim starten ne warning.


    Code
    1. C:\Dokumente und Einstellungen\Pride\Desktop\GDIPlus_Button\_GDIPlus_Button.au3(47,45) : WARNING: $hGraphic: possibly used before declaration.
    2. __GDIPlus_GraphicsDrawImageRect($hGraphic,
    3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    4. C:\Dokumente und Einstellungen\Pride\Desktop\GDIPlus_Button\HoverButton_Test.au3 - 0 error(s), 2 warning(s)


    MfG. PrideRage

  • Die Warnung ist normal, da die UDF Vorraussetzt, dass das GuiHandle und das dazugehörige Grafikhandle Global verfügbar sind. Deshalb gibt der compiler die Meldung: "Falls die nicht Global sind gibts Probleme" Nur halt auf englisch.


    Bei Guigetcursorinfo() und MouseGetPos() war ich mir selbst nicht ganz sicher welches der Beiden Verfahren sinnvoller zu benutzen ist.
    Ich habe halt das MouseGetPos() genommen, weil mir das wirklcih ausschließlich die Pos und nix anderes sagt.
    (geht nach meiner Meinung schneller in Verbindung mit _IsPressed("01") als MouseGetPos. Ich kann mich aber auch Irren. Habs nicht getestet.


    Das Switch ist ganz einfach.
    die Extended_Msg (also eine Indirekte oder 2te GuiMsg die ich halt so benannt habe^^) erhält beim release eines buttons den String den man bei der ButtonInit angibt.


    Und wenn oben steht "Button1" enthält die ExtMsg den Wert "Button1" wenn geklickt wurde.


    Jetzt geh ich aber mal Schlafen..^^
    mfg
    Mars(i)

  • Ich kann es ja anpassen. allerdings erhält die Funktion dadurch 2 Weitere Parameter...


    --> Jetzt sollten alle Warnungen wegen möglicherweise undeklarierten Variablen behoben sein.