Ich habe einen VirtualStringTree, der per Drag&Drop Elemente aus einem ShellListview (von DevExpress) annehmen soll. Das DragOver ist kein Problem, aber ich habe im OnDragDrop nur
DataObject: IDataObject
. Wie komme ich denn an die Dateien mit Pfad, die gedroppt wurden?
Bisher habe ich
Delphi-Quellcode:
procedure TStructureFrame.StructureTreeDragDrop(Sender: TBaseVirtualTree;
Source: TObject; DataObject: IDataObject; Formats: TFormatArray;
Shift: TShiftState; Pt: TPoint; var Effect: Integer; Mode: TDropMode);
var
aFmtEtc: TFORMATETC;
aStgMed: TSTGMEDIUM;
pData: PChar;
res: HRESULT;
I: Integer;
begin
with aFmtEtc do
begin
cfFormat := CF_HDROP;
ptd := nil;
dwAspect := DVASPECT_CONTENT;
lindex := -1;
tymed := TYMED_HGLOBAL;
end;
OleCheck(DataObject.GetData(aFmtEtc, aStgMed));
try
pData := GlobalLock(aStgMed.hGlobal);
ShowMessage(pData);
finally
GlobalUnlock(aStgMed.hGlobal);
ReleaseStgMedium(aStgMed);
end;
end;
Aber ich bekomme keine vernünftige Ausgabe...