Registriert seit: 17. Jan 2007
1.169 Beiträge
Turbo Delphi für Win32
|
Re: Drag & Drop vom Explorer in ListView
21. Mai 2007, 23:06
Hi,
mit Subclassing geht es bei mir dann aber doch.
Delphi-Quellcode:
private
OldWindowProc: TWndMethod;
procedure LvSubClassWndProc(var Message: TMessage);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses
shellapi;
{$R *.dfm}
procedure TForm1.LvSubClassWndProc(var Message: TMessage);
var
i, Counts, Size: Integer;
PCharFileName: PChar;
begin
if Message.Msg = WM_DROPFILES then
begin
PCharFileName:=nil;
Counts := DragQueryFile(Message.WParam, $FFFFFFFF, PCharFileName, 255);
for i := 0 to Counts - 1 do
begin
Size:=DragQueryFile(Message.WParam, i, nil, 0) + 1;
PCharFileName:=StrAlloc(Size);
DragQueryFile(Message.WParam, i, PCharFileName, Size);
showmessage(String(PCharFileName));
StrDispose(PCharFileName);
end;
DragFinish(Message.WParam);
end;
OldWindowProc(Message);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
OldWindowProc:= listview1.WindowProc;
listview1.WindowProc:= LvSubClassWndProc;
DragAcceptFiles(listview1.Handle, True);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
listview1.WindowProc:= OldWindowProc;
end;
Gruß bitsetter
"Viele Wege führen nach Rom" Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
|
|
Zitat
|