drag and drop per winapi
-
Mit DragAcceptFiles teile ich dem System mit, dass mein Fenster gedroppte Files akzeptiert.
Wie kann ich auf ebenso elegante Weise (d.h. über die Winapi und möglichst ohne das OLE-Gedöns) den umgekehrten Weg gehen:
ich möchte erkennen, dass das Fenster einer Fremdapplikation gedroppte Files akzeptiert und ihm dann ggf. das Droppen mitteilen.
-
Das OLE-Gedöns ist der Kern des Austausches über Fremdapplikationen:
http://msdn.microsoft.com/en-us/library/bb776905(VS.85).aspxDie Shell benutzt nur OLE/COM um dies zu behandeln!
-
Ich weiß. Aber ich will mich aus Zeitgründen momentan nicht in die Interna einarbeiten. Und für meine spezielle Anwendung wäre eine Abfrage wie "DoesWindowAcceptDroppedFiles" und eine Funktion wie "DropFilesOnWindow" am besten geeignet. Das Problem ist, dass nach dem "Loslassen" der Dateien und vor dem Übergeben ans Zielfenster noch ein Dialog meines Programms erforderlich ist. Es sollen ausschließlich Dateien gedroppt werden.
So was gibt es wohl nicht, oder?
-
Nein!
Das ist alles Teil der Shell und wird über COM geregelt!
Dieser Teil ist ja auch nicht Teil des eigentlichen Windows Kenrs sondern der Shell.
-
Martin,
aus Deinem Link entnehme ich, dass die Datenquelle nach dem Übergeben des Datenobjekts bis zur Rückmeldung über die Verarbeitung keine Einflußmöglichkeit auf den Transfer hat. Meine Anwendung müsste jedoch nach dem Loslassen des Objekts über dem Ziel noch einen Dialog zeigen, bevor das Ziel das Datenobjekt bekommt. Ist das überhaupt möglich?
-
Hmmm...
Was spricht dagegen diesen Dialog anzuzeigen wenn IDataObject::GetData und Konsorten aufgerufen wird?
-
Schau ich mir mal an. Danke für den Hinweis!