Siute à une demande par mail de Chap71
Voici un bout de code exemple:
// dans le fichier .h par exemple
class TFormMain : public TForm
{
__published: // Composants gérés par l'EDI
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormDestroy(TObject *Sender);
private: // Déclarations utilisateur
void __fastcall WmDropFiles(TWMDropFiles& Message);
public: // Déclarations utilisateur
__fastcall TFormMain(TComponent* Owner);
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_DROPFILES, TWMDropFiles, WmDropFiles);
END_MESSAGE_MAP(TForm);
};
// dans le fichier .cpp
__fastcall TFormMain::TFormMain(TComponent* Owner) : TForm(Owner){}
//---------------------------------------------------------------------------
void __fastcall TFormMain::FormCreate(TObject *Sender)
{
// Spécifie a Windows l'acceptation du glisser déposé de fichiers
::DragAcceptFiles(Handle, true);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::FormDestroy(TObject *Sender)
{
// Arrêter l'acceptation du glisser déposer
::DragAcceptFiles(Handle, false);
}
void __fastcall TFormMain::WmDropFiles(TWMDropFiles& Message)
{
// Gestion des fichiers déposés dans la fenêtre (drag & drop fichiers)
char buff[MAX_PATH];
HDROP hDrop = (HDROP)Message.Drop;
int nbf = ::DragQueryFile(hDrop, -1, 0, 0);
for (int i = 0; i < nbf; i++)
{
::DragQueryFile(hDrop, i, buff, sizeof(buff));
// le nom du fichier avec son chemin est dans buff
// on peut maintenant le passer par exemple à une fonction ou
// l'afficher ou ce que vous voulez
}
::DragFinish(hDrop);
}