AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi DragAcceptFiles - Was kann alles ein gültiges Ziel sein?
Thema durchsuchen
Ansicht
Themen-Optionen

DragAcceptFiles - Was kann alles ein gültiges Ziel sein?

Ein Thema von Fukiszo · begonnen am 18. Jan 2018 · letzter Beitrag vom 21. Jan 2018
Antwort Antwort
Fukiszo
(Gast)

n/a Beiträge
 
#1

DragAcceptFiles - Was kann alles ein gültiges Ziel sein?

  Alt 18. Jan 2018, 23:25
Hallo WinAPI Programmierer!

Ich hab irgendwie den Wurm drinn und bräuchte etwas Rat...

Hier die Situation:

Ich erstelle ganz normal ein Window-Dialog-Fenster ohne EXSTYLE WS_EX_ACCEPTFILES

Hier mein Dialog STYLE Header:
STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | WS_POPUPWINDOW | WS_VISIBLE | WS_DLGFRAME | WS_MINIMIZEBOX
EXSTYLE WS_EX_OVERLAPPEDWINDOW | WS_EX_TOPMOST | WS_EX_STATICEDGE | WS_EX_APPWINDOW | WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_NOINHERITLAYOUT

Hier mein Test CONTROL:
CONTROL "> Drop <", 1234, STATIC, SS_CENTER | WS_CHILD | WS_VISIBLE | WS_GROUP, 10, 10, 50, 50

Im Source verwende ich in der Init-Phase dieses Kommando:
DragAcceptFiles(GetDlgItem(hWin, 1234), True);

Ich habe auch WM_DROPFILES in meiner DlgProc() routine eingearbeitet aber bei Ausführung ist 1234 kein Drop-Target.

Wenn ich als CONTROL eine LISTBOX nehm, funktioniert es.
Wenn ich im EXSTYLE WS_EX_ACCEPTFILES angebe, ist das ganze Window ein Drop-Target (nicht erwünscht)

Was mache ich falsch oder akzeptiert DragAcceptFiles() nur bestimmte CONTROL's als Ziel ??
Oder muss ich die CONTROL mit einem bestimmten Parameter initialisieren in der .RC datei?

Ich hab dutzende kombinationen ausprobiert und komm einfach nicht weiter.

Meine Win32.hlp sagt:

Zitat:
The DragAcceptFiles function registers whether a window accepts dropped files.
VOID DragAcceptFiles(
HWND hWnd, // handle to the registering window
BOOL fAccept // acceptance option
);
Parameters
hWnd Identifies the window registering whether it accepts dropped files.
fAccept Specifies whether the window identified by the hWnd parameter accepts dropped files. This value is TRUE to accept dropped files; it is FALSE to discontinue accepting dropped files.

Return Values
This function does not return a value.

Remarks
An application that calls DragAcceptFiles with the fAccept parameter set to TRUE has identified itself as able to process the WM_DROPFILES message from File Manager.
Ich versteh es grad einfach nicht worin mein Fehler liegt und komme nicht weiter *schnief*

Hat jemand einen guten Tipp für mich?

Grüße
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: DragAcceptFiles - Was kann alles ein gültiges Ziel sein?

  Alt 19. Jan 2018, 06:21
Soweit ich weiß sollten alle Controls, die von TWinControl abgeleitet sind (wie eben z.B. ein Listview) ein eigenes Fensterhandle haben, was, soweit ich weiß, Voraussetzung ist, um Drag'n Drop zu realisieren.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Fukiszo
(Gast)

n/a Beiträge
 
#3

AW: DragAcceptFiles - Was kann alles ein gültiges Ziel sein?

  Alt 19. Jan 2018, 09:17
Ich werd nochmal verrückt....
Hab grad ein mini Beispiel gebastelt..... wie soll's anders sein, da funzt alles so wie ich es mir wünsche.

Im Anhang sind zwei Beispiele drinn, da klappts mit "Das CONTROL ist ein gültiges Ziel"...

sample1.dpr = LISTBOX ist ziel
sample2.dpr = STATIC ist ziel
dialog1.rc = ruft "BRCC32 dialog1.rc" auf um die .res datei zu erzeugen bevor ihr "dcc32 sampleX.dpr" aufruft.
(das Beispiel stammt von LENIN_INC, habs nur minimal abgeändert zum funktions test)

in diesen mini samples kann ich jedes control als legitimes drop ziel einbinden.

In meinem Haupt-Source muss ich irgendwo irgendein befehl drinnen haben der anscheinend das wieder rückgängig macht.
Mist mist mist.....

Von daher meine neue Frage, weiß jemand unter was für umständen ein DragAcceptFiles() wieder ausgehebelt werden könnte?
(mein Source ist ja nur schlapp 4mb gross, wird lustig ^^)
Angehängte Dateien
Dateityp: 7z drop_works.7z (917 Bytes, 8x aufgerufen)
  Mit Zitat antworten Zitat
HeZa

Registriert seit: 4. Nov 2004
Ort: Dortmund
182 Beiträge
 
Delphi 10 Seattle Professional
 
#4

AW: DragAcceptFiles - Was kann alles ein gültiges Ziel sein?

  Alt 21. Jan 2018, 19:23
Mein Tip, Debugging, evtl. mit den Delphi-Quellen im Debug-Modus. Lege einen Haltepunkt an eine Stelle der Event-Verarbeitung von Drag-Files, die noch erreicht wird und verfolge wohin die Resie geht.
  Mit Zitat antworten Zitat
Tyrolean

Registriert seit: 3. Jul 2003
76 Beiträge
 
Delphi 7 Professional
 
#5

AW: DragAcceptFiles - Was kann alles ein gültiges Ziel sein?

  Alt 21. Jan 2018, 20:45
Ich hatte früher das Problem RecreateWnd, also dass das Handle nach dem zuweisen wieder zerstört und neu erstellt wurde. Also nochmals zuweisen..
  Mit Zitat antworten Zitat
Fukiszo
(Gast)

n/a Beiträge
 
#6

AW: DragAcceptFiles - Was kann alles ein gültiges Ziel sein?

  Alt 21. Jan 2018, 20:54
Ich hatte früher das Problem RecreateWnd, also dass das Handle nach dem zuweisen wieder zerstört und neu erstellt wurde. Also nochmals zuweisen..
Ja, ich "verstecke" das proggy,
nicht in taskbar, nicht im taskmanager,
es erstellt sich selbst des öfteren wenns minimiert ist (im systray)
zerstör ich das Window und erschaffe es neu wenn aus tray zurück.

Das ist ein wahrscheinlich seeeeeeehr guter Tipp !!
Das grenzt es hoffentlich ein da per Debugger nichts ersichtlich wird.

Danke & Grüße

edit:
also selbst wenn ich einen TimerEvent (20ms intervall) laufen lasse in dem ein DragAcceptFile ausgeführt wird,
interessierts mein programm nicht, abgesehen vom kompletten window klappts nicht.
Ich werd die tage mal den source zerlegen und alles was in der startphase so passiert durchtesten.
Irgendein Grund muss es ja geben das mein
Code:
DragAcceptFiles(GetDlgItem(hWin, 12345), True);
versagt
aber ein
Code:
DragAcceptFiles(hWin, True);
klappt.

Geändert von Fukiszo (21. Jan 2018 um 21:40 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz