If.....

  • Hallo,

    so jetzt habe ich mir vorgenommen in zukunft mehr selbst zu machen aber ich hänge an einer stelle komme auch über die hilfe nicht weiter
    würde mich über eine kleine hilfe freuen

    ich weiss es gibt keine if exist funktion,
    aber ich wolle abfragen wenn es kein $pic dann zähle hoch also $pic2

    [autoit][/autoit]
    Spoiler anzeigen
    [autoit]

    Func _fpic
    if exist $pic1 + 1 ;????????????????????????


    EndFunc

    [/autoit]
    [autoit][/autoit]
    Spoiler anzeigen
    [autoit]

    #include <ListviewConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <SliderConstants.au3>
    #Include <GuiListView.au3>
    #Include <Array.au3>
    #Include <File.au3>
    #Include <Misc.au3>

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

    Opt("GUIOnEventMode", 1)
    Global $posXStart, $posYStart, $posXStop, $posYStop, $pic, $hGui, $Pos_M2 = MouseGetPos()

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


    $hGUI = GUICreate("Transparent", 575, 510)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Ex")
    $insert = GuiCtrlCreateButton("Insert Pic" ,10,10)
    GuiCtrlSetOnEvent(-1, "_insert")
    $Pic=GUICtrlCreatePic("", 50, 50)
    GuiCtrlSetOnEvent(-1, "_DragMe")
    $insert = GuiCtrlCreateButton("Del Pic" ,65,10)
    GuiCtrlSetOnEvent(-1, "_del")
    GUISetState(@SW_SHOW)

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

    While 1
    sleep(100)
    WEnd

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

    Func _fpic
    if exist $pic1 + 1 ;????????????????????????


    EndFunc
    Func _insert()
    $bild = FileOpenDialog("Wählen Sie eine Datei aus!", @WindowsDir & "\", "Bilder (*.jpg;*.bmp)", 1 + 4 )
    $Pic1 = GUICtrlCreatePic($bild, 150, 150)
    GuiCtrlSetOnEvent(-1, "_DragMe")
    EndFunc
    Func _del()
    GuiCtrlDelete($pic1)
    EndFunc

    Func _DragMe()
    Global $Pos_C, $Pos_M, $Pos_M2, $Opt_old
    Local $dll = DllOpen("user32.dll")
    $Opt_old = Opt('MouseCoordMode', 0)
    $Pos_C = ControlGetPos($hGui, "", $pic)
    $Pos_M = MouseGetPos()
    $Pos_W = WinGetPos($hGui)
    $x_Offset = $Pos_M[0] - $Pos_C[0]
    $y_Offset = $Pos_M[1] - $Pos_C[1]
    _MouseTrap($Pos_W[0]+$x_Offset,$Pos_W[1]+$y_Offset,$Pos_W[0]+$Pos_W[2],$Pos_W[1]+$Pos_W[3])
    While _IsPressed('01', $dll)
    $Pos_M = MouseGetPos()
    If $Pos_M <> $Pos_M2 Then
    GUICtrlSetPos($pic,$Pos_M[0] - $x_Offset, $Pos_M[1] - $y_Offset)
    sleep(10)
    EndIf
    $Pos_M = $Pos_M2
    sleep(50)
    WEnd
    DllClose($dll)
    Opt('MouseCoordMode', $Opt_old)
    _MouseTrap()
    EndFunc

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

    Func _Ex()
    Exit
    EndFUnc

    [/autoit]


    so sieht mein code jetzt aus zeile 29 fängt das problem an.
    Eine idee?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    3 Mal editiert, zuletzt von subzero007 (29. Mai 2009 um 19:54)

  • mh

    Vieleicht so:

    [autoit]

    If Not $Pic1 > 0 Then
    MsgBox (1, "Bild", "Bild existiert nicht!")
    Else
    MsgBox (1, "Bild", "Bild existiert!")
    EndIf

    [/autoit]


    Also dies überprüft jetzt ob ein Bild vorhanden ist!

    Das mit dem Zählen musst du mir mal näher erklären.
    Also wenn es $pic1 nicht gibt, dann soll $pic2 aufgerufen werden?
    Wenn ja, dann werd ich mal schauen wie man es umsetzen könnte ^^

    Falls es nicht geht.
    Bitte melden

    Mfg

    Benne

  • du kannst ja mein code anschauen ich will bilder in eine gui einfügen.
    das erste bild ist $pic1 will aber wenn ich ein zweites einfüge das er hochzählt,
    also immer +1
    also auf deutsch
    if exist $pic1 then $pic2
    das wollte ich dann in mein code packen idee?

    Edit:
    Eventuell habe ich einen denkfehler oder es ist komplett ein falscher ansatz:
    siehe zeile 12 und 29 bis 32?

    einen frage habe ich noch wo erkenne ich welches bild meine maus zuletzt angeklickt hat?
    Hundi hatte mir ja ein beispiel gegeben:
    Case $msg = $GUI_EVENT_PRIMARYDOWN AND $msg = $pic2
    _move_pic( $pic2, $diff_pic_mouse_l, $diff_pic_mouse_w )
    $last_clicked = $pic2

    und:
    GUICtrlDelete( $last_clicked)

    ICh weiss nicht wie ich das umsetzen kann in meine code habe ein verständniss problem???


    Spoiler anzeigen
    [autoit]

    #include <ListviewConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <SliderConstants.au3>
    #Include <GuiListView.au3>
    #Include <Array.au3>
    #Include <File.au3>
    #Include <Misc.au3>

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

    Opt("GUIOnEventMode", 1)
    Global $posXStart, $posYStart, $posXStop, $posYStop, $pic, $hGui, $Pos_M2 = MouseGetPos()
    Global $pic1 = _fpic()

    $hGUI = GUICreate("Transparent", 575, 510)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Ex")
    $insert = GuiCtrlCreateButton("Insert Pic" ,10,10)
    GuiCtrlSetOnEvent(-1, "_insert")
    $Pic1=GUICtrlCreatePic("", 50, 50)
    GuiCtrlSetOnEvent(-1, "_DragMe")
    $insert = GuiCtrlCreateButton("Del Pic" ,65,10)
    GuiCtrlSetOnEvent(-1, "_del")
    GUISetState(@SW_SHOW)

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

    While 1
    sleep(100)
    WEnd

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

    Func _fpic()
    if $pic1 > 0 Then
    $pic1 + 1
    EndFunc


    Func _insert()

    $bild = FileOpenDialog("Wählen Sie eine Datei aus!", @WindowsDir & "\", "Bilder (*.jpg;*.bmp)", 1 + 4 )
    $Pic1 = GUICtrlCreatePic($bild, 150, 150)
    GuiCtrlSetOnEvent(-1, "_DragMe")
    EndFunc

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

    Func _del()
    GuiCtrlDelete($pic1)
    EndFunc

    Func _DragMe()
    Global $Pos_C, $Pos_M, $Pos_M2, $Opt_old
    Local $dll = DllOpen("user32.dll")
    $Opt_old = Opt('MouseCoordMode', 0)
    $Pos_C = ControlGetPos($hGui, "", $pic1)
    $Pos_M = MouseGetPos()
    $Pos_W = WinGetPos($hGui)
    $x_Offset = $Pos_M[0] - $Pos_C[0]
    $y_Offset = $Pos_M[1] - $Pos_C[1]
    _MouseTrap($Pos_W[0]+$x_Offset,$Pos_W[1]+$y_Offset,$Pos_W[0]+$Pos_W[2],$Pos_W[1]+$Pos_W[3])
    While _IsPressed('01', $dll)
    $Pos_M = MouseGetPos()
    If $Pos_M <> $Pos_M2 Then
    GUICtrlSetPos($pic1,$Pos_M[0] - $x_Offset, $Pos_M[1] - $y_Offset)
    sleep(10)
    EndIf
    $Pos_M = $Pos_M2
    sleep(50)
    WEnd
    DllClose($dll)
    Opt('MouseCoordMode', $Opt_old)
    _MouseTrap()
    EndFunc

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

    Func _Ex()
    Exit
    EndFUnc

    [/autoit]

    bernd670: Beiträge zusammengefasst!

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von bernd670 (13. Juni 2009 um 19:34)

  • [autoit]


    Func _fpic
    if exist $pic1 + 1 ;????????????????????????


    EndFunc

    [/autoit]

    Du hast die Funktion _pic nicht geschlossen, so müsste es aussehen:

    [autoit]


    Func _fpic()
    if exist $pic1 + 1 ;????????????????????????


    EndFunc

    [/autoit]
  • ja den fehler hatte ich auch den habe ich aber bereits selber gefunden
    siehe beitrag 4 habe weiterhin das problem eine idee?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Mit
    GUIGetCursorInfo()
    kannst du mit dem 4. Wert im Array rausfinden über welchem Element die Maus im GUI grad ist.
    Dann kannst du mit _IsPressed abfragen ob die Maus gedrückt wird.
    Wenn sie gedrückt wurde dann ist $LastClicked = $GUIGETCURSOINFO[4]

    Das ganze in eine Funktion und Adlibben^^
    Hoffe ich konnte dir helfen !

    Gruß, eF

  • danke,
    aber erst werde ich mal mehrere bilder einfügen müssen um es zu testen.

    Ich bin ja noch bei meinem Problem If....

    siehe zeile 12 und 29 bis 32 im beitrag 4

    Edit:
    also habe mir mal die hilfe angeschaut
    GUIGetCursorInfo() damit kriege ich doch nur die mausposition und doch nicht das letzte bild was angefasst worden ist oder sehe ich das falsch?

    bernd670: Beiträge zusammengefasst!

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von bernd670 (13. Juni 2009 um 19:33)

  • Ich weiß nicht wie dus schaffst, aber jedes mal wenn ich ins Forum gucke finde ich wieder 3 neue Threads von dir und die Funks die ich dir schreibe gehen nich mehr :thumbup:

    Hier nochmal n Tritt in die richtige Richtung:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <Array.au3>
    #Include <Misc.au3>

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

    Opt("GUIOnEventMode", 1)
    Global $Pos_M2 = MouseGetPos()
    Dim $sPic[1]

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

    $hGUI = GUICreate("Transparent", 575, 510)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Ex")
    $insert = GuiCtrlCreateButton("Insert Pic" ,10,10)
    GuiCtrlSetOnEvent(-1, "_insert")
    $delete = GuiCtrlCreateButton("Delete Pic" ,70,10)
    GuiCtrlSetOnEvent(-1, "_Delete")
    $Pic=GUICtrlCreatePic("", 50, 50)
    GuiCtrlSetOnEvent(-1, "_DragMe")
    GUISetState(@SW_SHOW)

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

    While 1
    sleep(100)
    WEnd

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

    Func _insert()
    $bild = FileOpenDialog("Wählen Sie eine Datei aus!", @DesktopDir & "\", "Bilder (*.jpg;*.bmp)", 1 + 4 )
    If $bild = "" Then return
    $sPic[Ubound($sPic)-1] = GUICtrlCreatePic($bild, 150, 150)
    _ArrayAdd($sPic, "")
    GuiCtrlSetOnEvent(-1, "_DragMe")
    EndFunc

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

    Func _delete()
    For $i = 0 To Ubound($sPic)-1
    If $sPic[$i] <> "" Then
    GuiCtrlDelete($sPic[$i])
    _ArrayDelete($sPic, $i)
    ExitLoop
    EndIf
    Next
    EndFunc

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

    Func _DragMe()
    Local $hGui = @GUI_WINHANDLE, $pic = @GUI_CTRLID
    Local $Pos_C, $Pos_M, $Pos_M2, $Opt_old
    Local $dll = DllOpen("user32.dll")
    $Opt_old = Opt('MouseCoordMode', 0)
    $Pos_C = ControlGetPos($hGui, "", $pic)
    $Pos_M = MouseGetPos()
    $Pos_W = WinGetPos($hGui)
    $x_Offset = $Pos_M[0] - $Pos_C[0]
    $y_Offset = $Pos_M[1] - $Pos_C[1]
    _MouseTrap($Pos_W[0]+$x_Offset,$Pos_W[1]+$y_Offset,$Pos_W[0]+$Pos_W[2],$Pos_W[1]+$Pos_W[3])
    While _IsPressed('01', $dll)
    $Pos_M = MouseGetPos()
    If $Pos_M <> $Pos_M2 Then
    GUICtrlSetPos($pic,$Pos_M[0] - $x_Offset, $Pos_M[1] - $y_Offset)
    sleep(10)
    EndIf
    $Pos_M = $Pos_M2
    sleep(50)
    WEnd
    DllClose($dll)
    Opt('MouseCoordMode', $Opt_old)
    _MouseTrap()
    EndFunc

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

    Func _Ex()
    Exit
    EndFUnc

    [/autoit]
  • Nicht sauer sein,
    ich will doch lernen daher probiere ich nur das was in der hilfe steht umzusetzen,
    und daber geht einiges verloren aber ich finde ich bin schon etwas stukturierter in meinem code geworden wenn ich meine ersten anschaue
    und mit den Threads habe nur was zu den alten geschrieben und anschliesend geschlossen wollte dich nicht ärgern.
    ich habe ja gestern versprochen mir mehr mühe zu geben und mehr zu lesen in der hilfe als fragen zu stellen.

    Aber eine frage habe ich noch wenn ich mehrer bilder eingefügt habe, und ein bestimmtes löschen will.
    Also bild vorher anklicken "makieren" dann löschen "Delete Pic",
    wie heisst diese Funktion?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • quatsch ich bin nicht sauer =p War mir nur so aufgefallen.. Kein Thema!

    öhm dachte du willst immer das zletzt erstellete bild löschen aber so ists natürlich einfacher ;)

    Hier:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <Array.au3>
    #Include <Misc.au3>

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

    Opt("GUIOnEventMode", 1)
    Global $Pos_M2 = MouseGetPos(), $pic
    Dim $sPic[1]

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

    $hGUI = GUICreate("Transparent", 575, 510)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Ex")
    $insert = GuiCtrlCreateButton("Insert Pic" ,10,10)
    GuiCtrlSetOnEvent(-1, "_insert")
    $delete = GuiCtrlCreateButton("Delete Pic" ,70,10)
    GuiCtrlSetOnEvent(-1, "_Delete")
    GUISetState(@SW_SHOW)

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

    While 1
    sleep(100)
    WEnd

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

    Func _insert()
    $bild = FileOpenDialog("Wählen Sie eine Datei aus!", @DesktopDir & "\", "Bilder (*.jpg;*.bmp)", 1 + 4 )
    If $bild = "" Or @error Then return
    GUICtrlCreatePic($bild, 150, 150)
    GuiCtrlSetOnEvent(-1, "_DragMe")
    EndFunc

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

    Func _delete()
    GuiCtrlDelete($pic)
    EndFunc

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

    Func _DragMe()
    Global $hGui = @GUI_WINHANDLE
    $pic = @GUI_CTRLID
    Local $Pos_C, $Pos_M, $Pos_M2, $Opt_old
    Local $dll = DllOpen("user32.dll")
    $Opt_old = Opt('MouseCoordMode', 0)
    $Pos_C = ControlGetPos($hGui, "", $pic)
    $Pos_M = MouseGetPos()
    $Pos_W = WinGetPos($hGui)
    $x_Offset = $Pos_M[0] - $Pos_C[0]
    $y_Offset = $Pos_M[1] - $Pos_C[1]
    _MouseTrap($Pos_W[0]+$x_Offset,$Pos_W[1]+$y_Offset,$Pos_W[0]+$Pos_W[2],$Pos_W[1]+$Pos_W[3])
    While _IsPressed('01', $dll)
    $Pos_M = MouseGetPos()
    If $Pos_M <> $Pos_M2 Then
    GUICtrlSetPos($pic,$Pos_M[0] - $x_Offset, $Pos_M[1] - $y_Offset)
    sleep(10)
    EndIf
    $Pos_M = $Pos_M2
    sleep(50)
    WEnd
    DllClose($dll)
    Opt('MouseCoordMode', $Opt_old)
    _MouseTrap()
    EndFunc

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

    Func _Ex()
    Exit
    EndFUnc

    [/autoit]
  • Suppi..........
    Wenn ich gross bin will aich auch so sein wie du;-)

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Hmm ein wenig verarscht fühle ich mich schon aber ich nehms ma so hin :pinch:

    Wurde gefragt, ob ich etwas an dem vorletzten Code beschreiben kann, also schreib ichs mal hier hin, damits jeder Anfänger sieht!
    Halte dabei aber für meine Erklärungen nicht die Hand ins Feuer xD

    Spoiler anzeigen
    [autoit]

    #include<Array.au3>
    Dim $sPic[1]; Deklaration des Arrays.. Ein Array arbeitet in verschiedenen >Ebenen<..
    ;Hiermit hab ich Ebene 0 deklariert. Die Deklaration ist Global also das Array wird im ganzen Script erkannt!

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

    Func _insert()
    $bild = FileOpenDialog("Wählen Sie eine Datei aus!", @DesktopDir & "\", "Bilder (*.jpg;*.bmp)", 1 + 4 )
    If $bild = "" Then return; Falls eine Datei ausgewählt wurde ->..
    $sPic[Ubound($sPic)-1] = GUICtrlCreatePic($bild, 150, 150); ..Wird das Pic in der größten Ebene des Arrays gespeichert
    ;(Beim ersten Durchlauf wäre das Ebene 0!) Ubound ist einfach ein Befehl der dir angibt wieviele Ebenen
    ; sich in einem Array befinden!
    GuiCtrlSetOnEvent(-1, "_DragMe");Hier weisen wir lediglich dem grade erstellten Bild die Funktion _DragMe zu
    _ArrayAdd($sPic, "");wir habn erst grade die letzte Ebene beschrieben, also bereiten wir schonmal das Array
    ;für den nächsten Aufruf der Funktion _insert vor und setzen ans Ende des Arrays eine neue Ebene!
    EndFunc

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

    Func _delete()
    ;Mit dieser Funktion wird das erste Bild welches noch existiert gelöscht
    ;Gelöschte Ebenen haben den Wert "".. Also prüfen wir welche Ebene im Array die erste mit einem Inhalt außer "" ist!
    For $i = 0 To Ubound($sPic)-1
    If $sPic[$i] <> "" Then
    _ArrayDelete($sPic, $i);Die erste Ebene mit einem Inhalt wird gelöscht sowie
    GuiCtrlDelete($sPic[$i]);das dementsprechende Pic!
    ExitLoop
    EndIf
    Next
    EndFunc

    [/autoit]
  • Ich wollte dich echt nicht verarschen ich meine du hast es echt drauf würde gerne so wie du oder wie bugfix damit umgehen können,
    kannst du mir einen tipp geben wie ich voran komme ich hänge immer an irgend etwas was mache ich falsch ?
    Kannst du mir ein tipp geben?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Na dann bedanke ich mich fürs Kompliment! ^^
    Kla helf ich, poste einfach dein Script..

  • Ich meinte damit wo muss ein Anfänger anfangen, damit er das lernt wie hast du angefangen oder bugfix,
    mir ist es langsam unangenehm weil ich soviele fragen stelle ;(
    Noch trauriger ich habe schon in Kurzer zeit 150 beiträge aber nichts drauf ;(

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Ich meinte damit wo muss ein Anfänger anfangen, damit er das lernt wie hast du angefangen oder bugfix,
    mir ist es langsam unangenehm weil ich soviele fragen stelle ;(
    Noch trauriger ich habe schon in Kurzer zeit 150 beiträge aber nichts drauf ;(

    Sowas lernt man einfach beim rumspielen mit verschiedenen Funktionen.
    Manchmal ist es so das du dir eine Funktion anguckst, sie aber nicht verstehst.
    Dann lässt du sie fallen und irgendwann später benutzt du diese Funktion ganz einfach ohne weiteres.

  • @eF_Hacks: Oder noch einfacher mit @Gui_CtrlID

    @subzero: Hmm joa gute Frage. Eine Klarstellung am Anfang: Ich bin sicher kein Pro! Da biste schon bei unserem Array-String Jongleur aka. BugFix an der sicheren Seite!.. Aber ich sag einfach mal wie ich angefangen hab und es empfehlen würde:
    Es ist sicherlich am einfachsten die sprache zu lernen wenn man ziemlich früh sein eigenes kleines Mini-Projekt entwickelt. Dazu nie viel anderen Code benutzen sondern versuchen alles mit eigenem Code nachzumachen! So lernstu zum Beispiel als ersten Schritt ne anständige Gui zu machen..
    Ich warne an dieser Stelle vor Koda! ich bin der Meinung, das man Koda erst dann benutzen sollte, wenn man die Gui genausogut alleine amchen könnte!

    Ich hab mich zb damals als erstes Projekt an einen spambot gehängt und nicht aufgehört bis ich fertig war... Wenn ich mir das jetz nochmal so ansehe könnte ich über den Code lachen, aber hey fürs erste Projekt gut 2000 Zeilen sind nicht schlecht ..
    naja ich will jetzt keinen dazu bringen sowas kindisches zu machen wie ich..ganz im gegenteil: wenn ich früher angefangen hätte sinvolle sachen zu machen wüsste ich jetzt vllt mehr, denn hier ist der nächste fehler den den meißten einsteiger machen: Autoit ist zu weit mehr als Gamebots/Spambots zustande und das Forum hier ist nicht für diese art von script gedacht. Aber es war fürs erste ein super Einstieg für mich!

    Aber lieber BackToTopic!
    PS: Hach hab ihn sogar noch gefunden :D ->

    [Blockierte Grafik: http://img3.imagebanana.com/img/z61n6a16/spambot.gif]

    2 Mal editiert, zuletzt von ChaosKeks (27. Mai 2009 um 20:57)

  • So bin ja schonmal ein Schritt weiter;

    habe jetzt einen slider eingebaut;
    Die Gui kann ich jetzt die GFrösse mit der Maus anpassen;

    Und jetzt wollte ich es Transparent machen aber kriege es nicht hin?
    Und die Grösse des Bildes mit der Maus ändern können wie mache ich das?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <Array.au3>
    #Include <Misc.au3>
    #include <SliderConstants.au3>
    #include <ListviewConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <SliderConstants.au3>
    #Include <GuiListView.au3>
    #Include <Array.au3>
    #Include <File.au3>

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

    Opt("GUIOnEventMode", 1)
    Global $Pos_M2 = MouseGetPos(), $pic
    Dim $sPic[1]

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

    $hGUI = GUICreate("Transparent", 575, 510, Default, Default, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX), $WS_EX_ACCEPTFILES)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Ex")
    $insert = GuiCtrlCreateButton("Insert Pic" ,10,10)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GuiCtrlSetOnEvent(-1, "_insert")
    $delete = GuiCtrlCreateButton("Delete Pic" ,70,10)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GuiCtrlSetOnEvent(-1, "_Delete")
    $label = GUICtrlCreateLabel("Transparence = 0%", 30, 437, -1, 14)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    $slider = GUICtrlCreateSlider(10, 457, 144, 20, BitOR($TBS_AUTOTICKS, $WS_BORDER))
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    WinSetTrans("Transparent", "", 255 - GUICtrlRead($slider) * 2.55)
    Dim $Acc[2][2] = [["^i", $insert], ["^d", $delete]]
    GUISetAccelerators($Acc)
    GUISetState(@SW_SHOW)

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

    While 1
    sleep(100)
    WEnd

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

    Func _insert()
    $bild = FileOpenDialog("Wählen Sie eine Datei aus!", @DesktopDir & "\", "Bilder (*.jpg;*.bmp)", 1 + 4 )
    If $bild = "" Or @error Then return
    GUICtrlCreatePic($bild, 150, 150)
    GuiCtrlSetOnEvent(-1, "_DragMe")
    EndFunc

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

    Func _delete()
    GuiCtrlDelete($pic)
    EndFunc

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

    Func _DragMe()
    Global $hGui = @GUI_WINHANDLE
    $pic = @GUI_CTRLID
    Local $Pos_C, $Pos_M, $Pos_M2, $Opt_old
    Local $dll = DllOpen("user32.dll")
    $Opt_old = Opt('MouseCoordMode', 0)
    $Pos_C = ControlGetPos($hGui, "", $pic)
    $Pos_M = MouseGetPos()
    $Pos_W = WinGetPos($hGui)
    $x_Offset = $Pos_M[0] - $Pos_C[0]
    $y_Offset = $Pos_M[1] - $Pos_C[1]
    _MouseTrap($Pos_W[0]+$x_Offset,$Pos_W[1]+$y_Offset,$Pos_W[0]+$Pos_W[2],$Pos_W[1]+$Pos_W[3])
    While _IsPressed('01', $dll)
    $Pos_M = MouseGetPos()
    If $Pos_M <> $Pos_M2 Then
    GUICtrlSetPos($pic,$Pos_M[0] - $x_Offset, $Pos_M[1] - $y_Offset)
    sleep(10)
    EndIf
    $Pos_M = $Pos_M2
    sleep(50)
    WEnd
    DllClose($dll)
    Opt('MouseCoordMode', $Opt_old)
    _MouseTrap()
    EndFunc

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

    Func WM_HVSCROLL($hwnd, $iMsg, $wParam, $lParam)
    Local $hWndFrom, $iCode
    If Not IsHWnd($slider) Then $hWndCombo1 = GUICtrlGetHandle($slider)
    $hWndFrom = $lParam
    $iCode = _WinAPI_HiWord($wParam)
    Switch $hWndFrom
    Case $slider, $hWndCombo1
    GUICtrlSetData($label, "Transparence = " & GUICtrlRead($slider) & "%")
    WinSetTrans("Transparent", "", 255 - GUICtrlRead($slider) * 2.55)
    EndSwitch
    EndFunc
    Func _Ex()
    Exit
    EndFUnc

    [/autoit]

    Edit:
    keiner eine idee?

    bernd670: Beiträge zusammengefasst!

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von bernd670 (13. Juni 2009 um 19:32)

  • Für die sache mit der Transparenz einfach:

    [autoit]

    GUIRegisterMsg($WM_HSCROLL, "WM_HVSCROLL")

    [/autoit]

    vor die Main Loop tun!