I. Drag and Drop de l'explorateur Windows vers votre application▲
Dans cet exemple, nous allons copier les noms et chemins des fichiers glissés depuis l'explorateur Windows vers une ListBox (ListBox1) qui a été posée sur la Form (Form1).
Unit.h déclaration de la méthode DropFiles réagissant au message WM_DROPFILES
private
:
// Déclarations de l'utilisateur
void
DropFiles(TMessage &
Message);
public
:
// Déclarations de l'utilisateur
__fastcall TForm1(TComponent*
Owner);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_DROPFILES, TMessage, DropFiles);
END_MESSAGE_MAP(TForm);
Unit.cpp sur l'événement OnCreate de Form1 appel de la fonction DragAcceptFiles pour autoriser l'application à recevoir les noms fichiers depuis l'explorateur.
Puis définition de la méthode DropFiles dans laquelle le premier appel de la fonction DragQueryFile nous retourne le nombre de fichiers glissés et les appels suivants, leur nom et chemin.
La fonction DragFinish libère la mémoire.
#include
<shellapi.h>
//..........
void
__fastcall TForm1::
FormCreate(TObject *
Sender)
{
DragAcceptFiles(Handle, true
);
}
void
TForm1::
DropFiles(TMessage &
Message)
{
int
nFiles;
char
buffer[256
];
nFiles =
DragQueryFile((HDROP)Message.WParam, 0xFFFFFFFF
, NULL
, 0
);
for
(int
i =
0
; i <
nFiles; i++
)
{
DragQueryFile((HDROP)Message.WParam, i, buffer, 256
);
ListBox1->
Items->
Add((AnsiString)buffer);
}
DragFinish((HDROP)Message.WParam);
}