B
Ich habs jetzt getestet und du hast recht. Das liegt wohl daran, das in diesem Fall die WMDropFiles-Funktion nicht aufgerufen wird (d.h. der Event wird nicht abgefangen).
Ich hab das mal auf die Schnelle gelöst, indem ich ein ApplicationEvents-Control auf die Form gelegt habe und dort den WM_DROPFILES-Event abgefangen habe. Das funktioniert zwar, ich weiß aber nicht ob das sonderlich elegant ist bzw. irgendwelche Nebeneffekte hat.
Der OnMessage-Event von ApplicationEvents sieht dann so aus
void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,
bool &Handled)
{
int test = Msg.message;
if( Msg.message == WM_DROPFILES )
{
int ilFilesCount, ilStrLength;
char caFileName[MAX_PATH];
// Anzahl der Dateien bestimmen:
ilFilesCount=DragQueryFile((HDROP)Msg.wParam,-1,NULL,0);
for(int ilIndex=0; ilIndex<ilFilesCount; ilIndex++)
{
// Länge des Dateinamens bestimmen:
ilStrLength=DragQueryFile((HDROP)Msg.wParam,ilIndex,NULL,0);
// Dateinamen in char-Array caFileName übernehmen:
DragQueryFile((HDROP)Msg.wParam, ilIndex, caFileName, ilStrLength+1);
// ...und ab in die Listbox:
ListBox1 -> Items -> Add(caFileName);
}
Handled = true;
} else Handled = false;
}