1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Oscar

Beiträge von Oscar

  • Hintergrundfarbe für Controls ermitteln OHNE GetPixel

    • Oscar
    • 5. September 2020 um 17:54
    Zitat von Professor Bernd

    Wie sieht denn "GetBkColor(hDC)" innendrin aus, wird da vielleicht ein SendMessage verwendet?

    Das ist in Nim der direkte WinApi-Aufruf (wie "DllCall('gdi32.dll', 'dword', 'GetBkColor', 'handle', $hDC)" in "_WinAPI_GetBkColor" in AutoIt).

    Die Antwort von Bilgus würde ich auch so interpretieren, aber das kann nicht die (ganze) Wahrheit sein, sonst würde der Fehler auch unter Nim auftreten.

  • Hintergrundfarbe für Controls ermitteln OHNE GetPixel

    • Oscar
    • 5. September 2020 um 08:59
    Zitat von Bitnugger

    Ja... und soweit ich das jetzt verstehe, wird die Message von der Default-WinProc verarbeitet.

    Stimmt! Und eigentlich sollte das SendMessage gar nicht nötig sein (für mein Verständnis), aber "_WinAPI_GetBkColor" liefert ohne das SendMessage nur 0x00FFFFFF.

    In der Funktion "GUICtrlGetBkColor_WinAPI_1" hat Professor Bernd das ja aufgeführt.

    Entweder ist das ein Bug in Windows oder ein Feature. ^^

    Edit: Ok, wohl eher ein "Bug" in AutoIt, weil das mit Nim ohne SendMessage funktioniert:

    Code
    import winim, wNim, strutils
    
    let app = App()
    let frame = Frame(title="test", size=(640, 480))
    
    let panel = Panel(frame)
    let idText = StaticText(panel, label = "Test", pos=(10, 10), size=(100, 30), style=wAlignCentre or wBorderSimple)
    idText.setBackgroundColor(0x00FFAA88)
    var hDC = getHdc(idText.WindowDC)
    let color = GetBkColor(hDC)
    echo "GetBkColor: 0x", color.toHex
    
    frame.center()
    frame.show()
    app.mainLoop()
    Alles anzeigen

    Ergebnis = GetBkColor: 0x00FFAA88

  • ​Sammlung: Nim Snippets / Procedures

    • Oscar
    • 4. September 2020 um 16:57

    Hier mal ein Beispiel, wie man ein MouseHover mit Nim realisieren kann:

    Code
    import wNim, winim
    
    var tme: TTRACKMOUSEEVENT # TrackMouseEvent-Struktur erstellen
    tme.cbSize = DWORD sizeof(TTRACKMOUSEEVENT) # Groesse der Struktur eintragen
    tme.dwFlags = TME_HOVER or TME_LEAVE # Flags setzen
    
    let iconSize = (64, 64) # Groesse der Icons festlegen
    
    # Icons als wBitmap laden
    let
      bmpIcon1 = Bitmap(Icon("imageres.dll,175", size=iconSize)) # Hover-Icon fuer idPic1
      bmpIcon2 = Bitmap(Icon("imageres.dll,4", size=iconSize))   # Leave-Icon fuer idPic1
      bmpIcon3 = Bitmap(Icon("imageres.dll,176", size=iconSize)) # Hover-Icon fuer idPic2
      bmpIcon4 = Bitmap(Icon("imageres.dll,3", size=iconSize))   # Leave-Icon fuer idPic2
    
    let app = App()
    let frame = Frame(title="test", size=(320, 240))
    let panel = Panel(frame)
    let idPic1 = StaticBitmap(panel, pos=(50, 30), size=iconSize, bitmap=bmpIcon2)
    let idPic2 = StaticBitmap(panel, pos=(150, 30), size=iconSize, bitmap=bmpIcon4)
    
    # Das Template kann fuer mehrere StaticBitmap-Controls verwendet werden
    # Parameter: Control, Hover-Bitmap, Leave-Bitmap, Hover-Time (in ms)
    template registerMouseHover(self: wStaticBitmap, bmpHover, bmpLeave: wBitmap, iTime: DWORD = -1) =
      self.wEvent_MouseEnter do (event: wEvent): # MouseEnter wird einmalig beim "betreten" des Controls aufgerufen
        tme.hwndTrack = event.getWindow.mHwnd    # Das Handle und
        tme.dwHoverTime = iTime                  # die Hover-Time in die Struktur eintragen
        TrackMouseEvent(tme)                     # TrackMouseEvent aufrufen
      self.wEvent_MouseHover do (event: wEvent): # MouseHover, wenn die Mouse laenger als die Hover-Time auf dem Control ruht
        self.setBitmap(bmpHover)                 # Die Hover-Bitmap anzeigen
      self.wEvent_MouseLeave do (event: wEvent): # MouseLeave, wenn die Mouse das Control-Element verlaesst
        self.setBitmap(bmpLeave)                 # Die Leave-Bitmap anzeigen
    
    idPic1.registerMouseHover(bmpIcon1, bmpIcon2, 10)  # Hover-Effekt fuer idPic1 festlegen mit 10 ms
    idPic2.registerMouseHover(bmpIcon3, bmpIcon4, 800) # Hover-Effekt fuer idPic2 festlegen mit 800 ms
    
    frame.center()
    frame.show()
    app.mainLoop()
    Alles anzeigen
  • wNim Version 0.11.2 und Treeview

    • Oscar
    • 3. September 2020 um 14:59
    Zitat von Oscar

    Und nachdem ich mich etwas in wTreeCtrl.nim eingelesen habe, konnte ich zumindest ein Workaround erstellen:

    So, mit der neuen Version (v0.11.3) von wNim ist der Workaround nicht mehr nötig.

    Hier mal die Änderungen:

    Zitat

    Version 0.11.3

    wImageList: Fix incorrect index in getBitmap() and getIcon() (#64, thanks to BugFix).

    wTreeEvent: Fix getItem() and getOldItem(). Remove the mistake comment.

    Ja, auch der Bug bei der ImageList wurde gefixt. :thumbup:

  • Hintergrundfarbe für Controls ermitteln OHNE GetPixel

    • Oscar
    • 2. September 2020 um 19:03

    Ok, das ist für mich insofern interessant, weil ich jetzt weiß, dass "_WinAPI_GetBkColor" nur nach dem "_SendMessage" korrekt funktioniert.

    Ich weiß zwar noch nicht, ob ich das jemals brauchen werde (und wenn ja, ob ich mich dann daran erinnere :)), aber schonmal danke für's teilen! :thumbup:

    Gibt es für Dich denn eine direkte Notwendigkeit dafür?

    Ich meine, eigentlich kennt man doch die Hintergrundfarbe der Control-Elemente (man hat sie ja selbst gesetzt).

  • Noch eine MouseHover-UDF

    • Oscar
    • 2. September 2020 um 17:09

    Bitnugger hatte noch einige gute Ideen. Deshalb gibt es nochmal eine neue Version (Post#1). Danke Bitnugger! :):thumbup:

  • Hintergrundfarbe für Controls ermitteln OHNE GetPixel

    • Oscar
    • 2. September 2020 um 17:00
    Zitat von Professor Bernd

    Aber in diesem Thread geht es um eine Lösung OHNE GetPixel. Das ist alles.

    Hmm...dann bitte, poste doch Deine Lösung.

    Ich wüsste jetzt spontan keine Lösung, außer vielleicht Screenshot und dann in den Bilddaten suchen.

    Aber eigentlich fallen mir dafür auch nicht so viele Einsatzmöglichkeiten ein, weshalb ich mich damit nicht so wirklich beschäftigt habe.

  • Hintergrundfarbe für Controls ermitteln OHNE GetPixel

    • Oscar
    • 2. September 2020 um 16:37
    Zitat von Professor Bernd

    Ich würde gerne eine Lösung teilen, mit der man die Hintergrundfarbe von Controls ermitteln kann, ohne GetPixel zu verwenden. Dabei sollen ganz unterschiedliche Controls berücksichtig werden, wie z.B. Label, Edit, Input, Button, ComboBox, usw.


    Besteht Interesse, oder gibt es schon eine Lösung?

    Irgendwie verstehe ich nicht, was Du eigentlich willst.

    Du möchtest Deine Lösung mit uns teilen? Warum machst Du es nicht?

    In der ShoutBox liest sich das allerdings wieder anders.

    Du suchst eine Lösung?

    Was gefällt Dir an "PixelGetColor" oder "_WinAPI_GetPixel" nicht?

  • Brillante Voraussage !

    • Oscar
    • 2. September 2020 um 07:16
    Zitat von Mars

    Es ist vollkommen egal wer wann wo wie und warum gewählt wird, irgendwer innerhalb der letzten 200 Jahre hat es vorhergesagt, und dank Internet ist es heutzutage möglich effizient nach solchen Zitaten zu suchen, sodass man für jedes beliebige Ereignis eine passende Vorhersage findet, sofern man die Zeit investiert ein bisschen nachzuforschen.

    Ja, volle Zustimmung, aber "lustig" ist das Zitat trotzdem, wenn's nicht so traurig für uns alle wäre.

    Ich mag mir gar nicht vorstellen, wie es wird, wenn Der nochmal gewählt wird...

  • Noch eine MouseHover-UDF

    • Oscar
    • 2. September 2020 um 07:03
    Zitat von autoiter

    Ich finde nicht ganz so gut, dass die UDF keine Funktionsheader hat. Ohne Thread und Example ist sie - trotz ihrer Kürze - so schwer verständlich und für User Call Tip Manager unbrauchbar. Func1 und Func2 für EntryFunc und Func2 für ExitFunc sind als Ersatz auch nicht sprechend.

    Ja, damit hast Du natürlich recht. Die ungeliebte Dokumentation... ;)

    Ich habe das jetzt nachgeholt (neue Version, siehe Post#1). Danke für die konstruktive Kritik! :thumbup:

  • Noch eine MouseHover-UDF

    • Oscar
    • 1. September 2020 um 12:24

    Ich habe die UDF nochmal überarbeitet. Sie arbeitet jetzt mit SubClasses statt einem MouseHook.

    Dafür ist das jetzt ein echtes MouseHover (Hover-Effekt erst nach der Verzögerungszeit). Vorher war das ja eher ein MouseEnter, also sobald die Maus das Control-Element "betreten" hat.

    Das Beispiel habe ich entsprechend angepasst. Da sieht man auch, dass auch verschiedene Hover-/Leave-Funktionen möglich sind.

  • Noch eine MouseHover-UDF

    • Oscar
    • 31. August 2020 um 12:41

    Hier mal eine MouseHover-UDF, die mit SubClasses arbeitet und ein echtes MouseHover (mit Zeitverzögerung) ermöglicht.

    Die Benutzung ist einfach: die UDF includen und dann gibt es drei Funktionen:

    1. "_MouseHover_Register" zum registrieren der beiden Funktionen für MouseHover und MouseLeave. Außerdem kann man die Zeit (in ms) bestimmen, die die Maus über dem Control-Element sein muss, bevor die Hover-Funktion aufgerufen wird ("-1" gleich Standard-Systemzeit).

    2. "_MouseHover_UnRegister", um den Hover-Effekt wieder abzuschalten.

    3. "_MouseHover_Update", um die Parameter aendern zu koennen.

    Edit 02.09.2020 neue Version v1.3 (Anpassungen von Bitnugger):

    - Die Funktion "_MouseHover_Update" ist dazugekommen.

    - Einige kleine Änderungen am Code.

    - Beispiel-Code angepasst.

    Edit 22.01.2023 neue Version v1.4:

    - Die statische Variable "$bMouseTrack" in eine globale Variable "$__g_bMouseTrack" umgewandelt, um einen Fehler zu beheben, der auftritt, wenn man "_MouseHover_UnRegister" aufruft für ein Objekt, auf dem sich die Maus gerade befindet. Ein Dankeschön an Aaron3569 für das finden des Fehlers!

    Schaut euch einfach das Beispiel an (siehe Anhang).

    Dateien

    MouseHover_v1_4.zip 3,09 kB – 262 Downloads
  • Diskussion zu [Skripte] control hover effekt ohne fehler

    • Oscar
    • 29. August 2020 um 18:25

    Die Idee von BugFix mit dem Hook finde ich sehr gut, aber ich würde es etwas anders umsetzen:

    AutoIt
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <StructureConstants.au3>
    #include <WinAPIConstants.au3>
    #include <WinAPIConv.au3>
    #include <WinAPIInternals.au3>
    #include <WinAPISys.au3>
    #include <WinAPISysWin.au3>
    #include <WindowsConstants.au3>
    
    Opt("MustDeclareVars", 1)
    OnAutoItExitRegister('OnAutoItExit')
    
    Global Const $tagMSLLHOOKSTRUCT = $tagPOINT & ';dword mouseData;dword flags;dword time;ulong_ptr dwExtraInfo'
    
    Global $__hMouseProc = DllCallbackRegister("_MouseProc", "long", "int;wparam;lparam")
    Global $__hHook = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($__hMouseProc), _WinAPI_GetModuleHandle(0))
    
    Global Const $COLOR_HOOVER = 0xD7EDFF ; helles grau
    Global Const $COLOR_NORMAL = 0xE6E6E6 ; helles blau
    
    Global $Form1 = GUICreate("Form1", 514, 330)
    Global $Label1 = GUICtrlCreateLabel("Label1", 96, 88, 92, 33, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER))
    GUICtrlSetBkColor(-1, $COLOR_NORMAL)
    Global $Label2 = GUICtrlCreateLabel("Label2", 208, 88, 92, 33, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER))
    GUICtrlSetBkColor(-1, $COLOR_NORMAL)
    Global $Label3 = GUICtrlCreateLabel("Label3", 320, 88, 92, 33, BitOR($SS_CENTER, $SS_CENTERIMAGE, $WS_BORDER))
    GUICtrlSetBkColor(-1, $COLOR_NORMAL)
    
    Global $aHoverCtrl[0] ; Array mit den Handles der Hover-Ctrls
    _ArrayAdd($aHoverCtrl, GUICtrlGetHandle($Label1)) ; Hover-Effekt nur bei Label1
    _ArrayAdd($aHoverCtrl, GUICtrlGetHandle($Label3)) ; und Label3
    GUISetState(@SW_SHOW)
    
    
    While 1
        Local $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
    
    Func OnAutoItExit()
        _WinAPI_UnhookWindowsHookEx($__hHook)
        DllCallbackFree($__hMouseProc)
    EndFunc   ;==>OnAutoItExit
    
    Func _MouseProc($_nCode, $_wParam, $_lParam)
        If $_nCode < 0 Then Return _WinAPI_CallNextHookEx($__hHook, $_nCode, $_wParam, $_lParam)
        Local Static $hLast
        Local $tPoint = DllStructCreate($tagPOINT, $_lParam), $hChild
        Local $hParent = _WinAPI_WindowFromPoint($tPoint)
        $hParent = _WinAPI_GetAncestor($hParent, $GA_ROOT)
        Switch $_wParam
            Case $WM_MOUSEMOVE
                _WinAPI_ScreenToClient($hParent, $tPoint)
                $hChild = _WinAPI_ChildWindowFromPointEx($hParent, $tPoint)
                If IsHWnd($hChild) And $hChild <> $hLast Then
                    If $hLast <> $hParent Then GUICtrlSetBkColor(_WinAPI_GetDlgCtrlID($hLast), $COLOR_NORMAL)
                    If $hChild <> $hParent And _ArraySearch($aHoverCtrl, $hChild) > -1 Then
                        GUICtrlSetBkColor(_WinAPI_GetDlgCtrlID($hChild), $COLOR_HOOVER)
                    EndIf
                    $hLast = $hChild
                EndIf
        EndSwitch
        Return _WinAPI_CallNextHookEx($__hHook, $_nCode, $_wParam, $_lParam)
    EndFunc   ;==>_MouseProc
    Alles anzeigen

    Edit: Code noch etwas gekürzt.

  • Globale Variable ändern

    • Oscar
    • 28. August 2020 um 12:52

    Die Übergabevariable hat den gleichen Variablennamen wie die globale Variable. In dem Fall handelt es sich innerhalb der Funktion um eine lokale Variable.

    Entweder musst Du eine Variable umbenennen oder die Variable als Referenz (ByRef) übergeben:

    AutoIt
    Global $test = "alt"
    
    _test_($test)
    ConsoleWrite(@ScriptLineNumber & @TAB & $test & @CRLF)          ;    warum erhalte ich hier nicht "neu" ?
    
    Func _test_(ByRef $test)
        $test = "neu"
    EndFunc   ;==>_test_
  • Wie kann man eine Variablen-Liste an Switch-Case übergeben?

    • Oscar
    • 27. August 2020 um 09:27

    Im OnEventModus geht das schon:

    AutoIt
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    
    Opt('GUIOnEventMode', 1)
    Global $aIDCtrl[1], $idTmp
    Global $hGui = GUICreate('Test', 640, 480)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_CloseGui')
    $idTmp = GUICtrlCreateButton('Ja', 10, 10, 80, 20)
    GUICtrlSetOnEvent(-1, '_ButtonClick')
    _ArrayAdd($aIDCtrl, $idTmp)
    $idTmp = GUICtrlCreateButton('Nein', 110, 10, 80, 20)
    GUICtrlSetOnEvent(-1, '_ButtonClick')
    _ArrayAdd($aIDCtrl, $idTmp)
    $idTmp = GUICtrlCreateButton('Vielleicht', 210, 10, 80, 20)
    GUICtrlSetOnEvent(-1, '_ButtonClick')
    _ArrayAdd($aIDCtrl, $idTmp)
    $idTmp = GUICtrlCreateButton('Weiss nicht', 310, 10, 80, 20)
    GUICtrlSetOnEvent(-1, '_ButtonClick')
    _ArrayAdd($aIDCtrl, $idTmp)
    
    GUISetState()
    While Sleep(100)
    WEnd
    
    Func _CloseGui()
        Exit
    EndFunc
    
    Func _ButtonClick()
        Local $idCtrl = @GUI_CtrlId
        ConsoleWrite($idCtrl & @CR)
        For $i = 0 To UBound($aIDCtrl) - 1
            If $aIDCtrl[$i] = $idCtrl Then
                ConsoleWrite($aIDCtrl[$i] & @CR)
            EndIf
        Next
    EndFunc
    Alles anzeigen
  • Diskussionen etc. zu Snippets

    • Oscar
    • 21. August 2020 um 05:01
    Zitat von Bitnugger

    Daran lag es!

    Ok, dann wurde dort offenbar irgendwas verändert.

    Danke, für die Rückmeldung!

  • Diskussionen etc. zu Snippets

    • Oscar
    • 20. August 2020 um 19:29
    Zitat von Bitnugger

    Nim Compiler Version 1.2.0 [Windows: amd64]

    wnim-0.11.2

    Ok, wNim ist die aktuelle Version. Die benutze ich auch.

    Bei Nim benutze ich allerdings auch die aktuelle Version (v1.2.6).

    Und winim ist bei mir v3.4.0 also ebenfalls die aktuelle Version.

  • Diskussionen etc. zu Snippets

    • Oscar
    • 20. August 2020 um 16:36
    Zitat von Bitnugger

    Ops...

    Hmmm...das verstehe ich nicht.

    Bei mir funktioniert das ohne Probleme.

    Hast Du irgendswas an dem Code verändert?

    Edit: Welche Nim-Version benutzt Du?

  • ​Sammlung: Nim Snippets / Procedures

    • Oscar
    • 20. August 2020 um 14:12

    Wenn man ein Programm zwei Mal startet, will man vielleicht Nachrichten zwischen diesen beiden Prozessen austauschen (z.B. weil man Dateien an die erste Instanz übergeben will).

    Dazu kann man eine NamedPipe verwenden und dazu habe ich hier mal ein Beispiel erstellt:

    Code
    import winim, wNim, strutils
    echo "Nim-Version: ", NimVersion
    
    var
      # Der Pipe-Name darf max. 256 Zeichen lang sein (Gross-/Kleinschreibung wird nicht beachtet).
      pipeName: LPCSTR = r"\\.\pipe\myuniquepipename"
      OL: OVERLAPPED # Overlapped-Struktur erstellen
      pOL: LPOVERLAPPED = OL.addr # Pointer auf die Struktur
      bufSize: DWORD = 4096 # Groesse des Sende-/Empfangsbuffers (in Bytes/Chars)
      buf = newSeq[char](bufSize) # Empfangsbuffer erstellen
      read: DWORD # Variable, um die Anzahl der empfangenen Zeichen aufzunehmen
    
    # Die NamedPipe erstellen.
    # Der Parameter "FILE_FLAG_FIRST_PIPE_INSTANCE" verhindert ein mehrfaches erstellen der Pipe.
    let hPipe = CreateNamedPipeA(
      pipeName, # Pipename
      PIPE_ACCESS_DUPLEX or FILE_FLAG_FIRST_PIPE_INSTANCE or FILE_FLAG_OVERLAPPED, # OpenMode
      PIPE_TYPE_MESSAGE or PIPE_READMODE_MESSAGE or PIPE_NOWAIT, # PipeMode
      1, # Max. Instances
      bufSize, # Out-Buffersize
      bufSize, # In-Buffersize
      0, # Timeout (0 = default = 50ms)
      NULL # Pointer to SecurityAttributes
      )
    
    # Wenn die Pipe nicht erstellt werden konnte, dann existiert sie bereits.
    # Es handelt sich also um die zweite Instanz.
    if hPipe == INVALID_HANDLE_VALUE:
      echo "Zweite Instanz"
      var sendMsg: LPCSTR = "Dieser Text wird an die erste Instanz gesendet."
      # Hiermit wird ein String an die erste Instanz gesendet und im Empfangsbuffer
      # steht dann die Rueckmeldung der ersten Instanz.
      CallNamedPipeA(pipeName, sendMsg, DWORD sendMsg.len, 
        buf[0].addr, DWORD buf.len, read.addr, NMPWAIT_USE_DEFAULT_WAIT)
      echo "Empfangen: ", join(buf[0..read-1])
      # Die zweite Instanz beenden
      quit()
    
    # Ab hier nur fuer die erste Instanz
    echo "Erste Instanz"
    
    let app = App()
    let frame = Frame(title="Named Pipe example", size=(300, 160))
    
    # Timer-Funktion (hier wird auf die Pipe-Nachrichten gewartet)
    frame.wEvent_Timer do (event: wEvent):
      # Wenn eine Nachricht auf der Pipe angekommen ist...
      if ReadFile(hPipe, buf[0].addr, DWORD buf.len, read.addr, pOL) == TRUE:
        echo "Bytes empfangen: ", read
        echo "'", join(buf[0..read-1]), "'" # die Nachricht in einen String umwandeln und anzeigen
        # Eine Bestaetigung an die zweite Instanz zuruecksenden
        TransactNamedPipe(hPipe, LPCSTR "Ok.", 4, NULL, 0, read.addr, pOL)
        DisconnectNamedPipe(hPipe) # die Pipe trennen (um die zweite Instanz freizugeben)
        ConnectNamedPipe(hPipe, pOL) # und wieder neu verbinden
    
    # Timer starten (0.1 sek.)
    frame.startTimer(0.1)
    
    frame.show()
    app.mainLoop()
    Alles anzeigen

    Um das Beispiel testen zu können, müsst ihr das Programm compilieren und dann zwei Mal starten. Das erste Mal von VSCodium und dann noch mal von einer Kommandozeile aus.

    Ich habe den Code ausführlich kommentiert, damit ihr das nachvollziehen könnt.

  • Gegenstück zu GUICtrlSetImage

    • Oscar
    • 20. August 2020 um 05:03
    Zitat von Banana_2_Day

    Ich suche sozusagen GUICtrlGetImage

    Den gibt es nicht, weil der Dateiname nicht abgespeichert wird.

    Wenn Du den brauchst, musst Du ihn selbst in einem Array (evtl. zusammen mit der Control-ID) ablegen.

    Edit: Hier mal ein Minimal-Beispiel (mit Dictionary statt Array):

    AutoIt
    #include <GUIConstantsEx.au3>
    
    Global $oDict = ObjCreate('Scripting.Dictionary')
    
    Global $hGui = GUICreate('Test', 800, 600)
    Global $idPic1 = GUICtrlCreatePic('', 10, 10, 780, 280)
    _GuiCtrlSetImage($idPic1, 'island.jpg')
    Global $idPic2 = GUICtrlCreatePic('', 10, 300, 780, 280)
    _GuiCtrlSetImage($idPic2, 'mountain.jpg')
    GUISetState()
    While True
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                exit
            Case $idPic1
                ConsoleWrite(_GuiCtrlGetImage($idPic1) & @CR)
            Case $idPic2
                ConsoleWrite(_GuiCtrlGetImage($idPic2) & @CR)
        EndSwitch
    WEnd
    
    Func _GuiCtrlSetImage($idCtrl, $sImgFile)
        GUICtrlSetImage($idCtrl, $sImgFile)
        $oDict.Item($idCtrl) = $sImgFile
    EndFunc
    
    Func _GuiCtrlGetImage($idCtrl)
        Return $oDict.Item($idCtrl)
    EndFunc
    Alles anzeigen

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™