Drag-and-Drop
-
Hallo zusammen!
Sofort zur Sache. Wie kann ich das Prinzip Drag-and-Drop umsetzen? Ich will, wenn ich auf ein Edit-Feld eine Datei oder ein Verzeichnis per Drag-and-Drop ziehe, daß in diesem der Pfad der Datei (oder des Verzeichnises) steht.Mein Code sieht so aus:
BOOL CMyDialog::PreTranslateMessage(MSG* pMsg) { if(pMsg->message == WM_DROPFILES) { // hier möchte ich ein String mit dem Pfad bilden // und dem Edit-Feld zuweisen. Das einzige, das sich // an der Stelle ändert, ist pMsg->wParam. Aber wie // ich daraus den Pfad herausfinde, weiß ich nicht } return CDialog::PreTranslateMessage(pMsg); } Hat jemand 'ne Idee?
-
Hallo,
In MessageMap einfügen:
ON_WM_DROPFILES();
Im dem Ereignis OnCreate:
DragAcceptFiles();Dann Funktion einfügen (Mit dem KlassenAssi)
OnDropFiles(HDROP hDropInfo)
{
char szInput[400];
DragQueryFile(hDropInfo,0,szInput,sizeof(szInput));
DragFinnish(hDropInfo);(DeinEdit).SetItemText(szInput);
CDialog::OnDropFiles(hDropInfo);
}So sollte das Funktionieren.
Gruß
Ocrana
-
Danke!
werde gleich ausprobieren
-
Hi!
Bei mir geht so leider nicht. Der Klassen-Assi bietet mir die Funktion OnDropFiles(HDROP hDropInfo) nicht an. Ich habe aber in dem Ressourcen-Editor das Flag "Datei akzeptieren" gesetzt (weiß nicht, ob dies wichtig ist)
-
Hi!
Das Problem habe ich gelöst, indem ich eine Klasse CDropEdit erstellt habe, von CEdit abgeleitet, und für die Klasse die Funktion OnDropFiles(hDropInfo) überschrieben habe.Danke für die Anregung