GuiDropFiles will nicht, wie ich will...

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

GuiDropFiles will nicht, wie ich will...

22 Jun 2017, 05:17

Hallöchen zusammen,

erstmal ein wenig Kot... öhm... Code XD':

Code: Select all

    Gui, Main: Add, Picture, 0x1000 vMyPic w640 h480

    ; Hier folgen mehrere verschiedene Elemente

    Gui,Main:  Show,, Hauptfenster
Return

MainGuiDropFiles:
    msgbox %A_GuiEvent%
Return

MainGuiClose:
    ExitApp
Return
Nun das Problem:
Das kurze Script hier funktioniert tadellos.
Baue ich aber EXAKT diese Labels (MainGuiDropFiles, etc.) in das Programm ein, an dem ich gerade schreibe, ändert sich beim "Droppen" zwar der Mauszeiger, es passiert aber absolut nichts. Keine Fehlermeldung, keine Anzeige, einfach nichts.

Das Gui, bei dem es nicht klappt, unterscheidet sich nur darin, dass es etliche Elemente (ListViews, Buttons, Text, etc.) hat und folgendermaßen beginnt:

Code: Select all

    Gui, Main: +MinSize%XWINW%x%XWINH% +DPIScale -ToolWindow -MaximizeBox +Resize -Owner +OwnDialogs -Border
Daher meine Frage(n):
1) Muss ich für jedes Element 0x1000 separat setzen?
2) Geht Drag & Drop nur mit bestimmten GUI Elementen?
3) Reicht es aus, das Label MainGuiDropFiles: zu setzen, um Drag & Drop für alle Elemente des GUI (alo egal, wo ich Dateien ablege) zu ermöglichen?

Grüße und Danke im Voraus,

Gucky
just me
Posts: 9453
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: GuiDropFiles will nicht, wie ich will...

22 Jun 2017, 05:49

Moin,

Code: Select all

    Gui, Main: +MinSize%XWINW%x%XWINH% +DPIScale -ToolWindow -MaximizeBox +Resize -Owner +OwnDialogs -Border
    Gui, Main: Add, Picture, 0x1000 vMyPic w640 h480

    ; Hier folgen mehrere verschiedene Elemente

    Gui,Main:  Show,, Hauptfenster
Return

MainGuiDropFiles:
    msgbox %A_GuiEvent%
Return

MainGuiClose:
    ExitApp
Return
...funktioniert bei mir. Hast Du geprüft, ob alle Gui-Kommandos das Zauberwort Main: enthalten?
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: GuiDropFiles will nicht, wie ich will...

22 Jun 2017, 06:01

Ich prüfe all solche Dinge nun schon seit 2 Tagen wieder und wieder, komme aber zu keinem Ergebnis, daher mein Griif nach dem Strohhalm hier.

Ich kann leider nicht meinen kompletten Code posten, da dieser inzwischen > 6000 Zeilen umfasst und vermutlich damit nicht mehr wirklich "lesbar" ist , sonst hätte ich dies sicher getan.

Grüße,

Gucky
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: GuiDropFiles will nicht, wie ich will...

22 Jun 2017, 06:06

Es lohnt sich in solchen Fällen so lange unnützen code zu entfernen der das Problem nicht betrifft, bis das Programm wieder funktioniert.
Danach kann man rausfinden welche Code Schnipsel das Problem verursachen.
Recommends AHK Studio
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: GuiDropFiles will nicht, wie ich will...

22 Jun 2017, 06:48

Ist mir schon klar, nnnik.
Problem hierbei: Ich habe das DropFiles Label schon von Anfang an drin und war mir sicher, dass s klappt, weil ich solche Probleme bisher noch nicht hatte. Daher habe ich das anfangs auch nicht getestet. Das kam erst jetzt, da ich diese Routine programmieren wollte.
Na ich denk, ich werds schon finden XD

Es ging mir nur um die Fragen oben, die in der Hilfe leider nicht so detailliert beantwortet werden.

Trotzdem danke,

Gucky.
just me
Posts: 9453
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: GuiDropFiles will nicht, wie ich will...

22 Jun 2017, 07:27

Noch ein Nachschlag:
1) Muss ich für jedes Element 0x1000 separat setzen?
Der Stil 0x1000 hat mit Drag&Drop nichts zu tun. Wie von Dir verwendet ist es SS_SUNKEN und bewirkt, dass um statische Controls wie Text Oder Pic ein Rahmen gezeichnet wird. Der 'Dropstil' wäre WS_EX_ACCEPTFILES := 0x00000010 bzw. +E0x10.
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: GuiDropFiles will nicht, wie ich will...

22 Jun 2017, 07:50

Das ist in der Tat sehr interessant, denn um meine Controls wird kein Rahmen gezeichnet, außer die, bei denen ich +Border verwende.
Dann lösch ich das mal raus, da es eh (hier) nutzlos ist.

Ich habe jetzt meinen kompletten Code mal 'abgeschaltet', sodass nur noch folgender Code übrig bleibt:

Code: Select all

    SetBatchLines    , -1
    SetControlDelay  , -1
    SetTitleMatchMode RegEx
    SetTitleMatchMode, Slow
    SendMode Input
    AutoTrim, on
    SetWorkingDir %A_ScriptDir%
    
    Gui, Main: +DPIScale -ToolWindow -MaximizeBox +Resize -Owner +OwnDialogs -Border
    Gui, Main: Default
    Gui, Main: +LastFound
    Gui, Main: Color, 3D3F40, 3D3F40
    Gui, Main: Font , s10 w1100 cFFFFCC, Calibri
    ; Gui, Main: Add, Picture, x10 y10 w20h20 vpic     ; Zum Testen
    Gui, Main: Show, w900 h700, Test
Return



MainGuiDropFiles:
    msgbox %A_GuiEvent%
    msgbox, Event: %A_GuiEvent%`nKoords: %A_GuiX% x A_GuiY`nEventInfo: %A_EventInfo%`nGuiControl: %A_GuiControl%
Return
Das Ergebnis ist und bleibt das selbe. Der Mauszeiger ändert sich, wenn er über dem Fenster ist, aber die msgbox kommt einfach nicht.
Ändere ich aber z.B. das Label 'MainGuiDropFiles:', indem ich 1 Zeichen ändere, klappt das Drag & Drop nicht mehr (Der Mauszeiger sagt 'verboten'.
Demnach ist Drag & Drop ja aktiv, aber die Events kommen, aus welchem Grund auch immer, nicht.

Kopfkratz...


Kleiner Nachtrag:
Wenn ich in die Erste Gui Zeile (Gui, Main: +DPIScale...) das '+E0x10' einfüge, ändert sich an dem Verhalten ooch nüscht.
Hatte ich aber schon befürchtet ;)


Und noch ein Nachtrag:
Der von mir oben gepostete Code läuft, wenn ich ihn als separate AHK Datei speichere,
im eigentlichen Script aber nicht??!!


FEHLERURSACHE GEFUNDEN:
Ich hatte die Tage mal ganz oben folgende Funktion eingebaut, um ein Starten des Scriptes als Admin zu erzwingen:

Code: Select all

if not (A_IsAdmin or RegExMatch(full_command_line, " /restart(?!\S)"))
{
    try
    {
        if A_IsCompiled
            Run *RunAs "%A_ScriptFullPath%" /restart
        else
            Run *RunAs "%A_AhkPath%" /restart "%A_ScriptFullPath%"
    }
    ExitApp
}
Lasse ich das weg, klappt Drag & bDrop einwandfrei.
Nur...... Wie krieg ich beides unter einen Hut?

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 42 guests