Drag and Drop in MFC



  • Für eine Listbox in meiner Anwendung möchte ich das Drag & Drop
    ermöglichen. Es soll möglich sein in diese Listbox Dateien
    "ziehen" zu können. Es soll dann der Name der dort hingezogenen
    Datei angezeigt werden.

    Ich bin soweit, dass ich für die Listbox "Dateien annehmen"
    auf TRUE gesetzt habe. Nun muss ich wohl noch WM_DROPFILES meiner
    Hauptklasse des Dialoges mitteilen was ich machen will.

    Dazu habe ich folgendes gefunden:

    UINT i = 0;
    UINT nFiles = ::DragQueryFile(hDropInfo, (UINT) -1, NULL, 0);
    for (i = 0; i < nFiles; i++)
    {
        TCHAR szFileName[_MAX_PATH];
        ::DragQueryFile(hDropInfo, i, szFileName, _MAX_PATH);
    
    }
    	CDialog::OnDropFiles(hDropInfo);
    

    Hier würden dann ja wohl die gezogenen Dateinamen ermittelt werden..
    Nur wie zeige ich diese jetzt in meiner Listbox an um damit weiterarbeiten
    zu können ? Mit Drag and Drop blicke ich noch nicht wirklich durch und
    bin daher für jede Hilfe dankbar !



  • Mach mal:

    UINT i = 0;
    UINT nFiles = ::DragQueryFile(hDropInfo, (UINT) -1, NULL, 0);
    for (i = 0; i < nFiles; i++)
    {
        TCHAR szFileName[_MAX_PATH];
        ::DragQueryFile(hDropInfo, i, szFileName, _MAX_PATH);
    AfxMessageBox(szFileName);
    }
        CDialog::OnDropFiles(hDropInfo);
    

    Ich glaube, dann bekommst du lauter Meldungen mit den Dateinamen.
    Wenn das so ist, kannst du sie ja statt der MessageBox einfach in die Liste packen. 🙂



  • Vielen Dank. Du hast recht. Ich hatte zum einfügen in meine
    Listbox versehentlich SetString und nicht AddString genommen.
    Das konnte ja nichts werden.

    Wie kann ich analog zu obigem nun wieder aus der Listbox
    einen Eintrag rausziehen in eine zweite Listbox ?



  • DeleteString? 😉



  • jup.. mit deletestring löschen und mit addstring wieder in die andere opacken.. oder mal bei codeproject oder codeguru gucken, die haben vll beispiele zu D&D


Anmelden zum Antworten