1. Uses절에 ShellApi를 포함시킨다.
2. Form class의 protected에 아래와 같이 기록
protected
procedure WMDROPFILES( var Msg : TMessage ); message WM_DROPFILES;
3. 기록된 WMDROPFILES 를 구현한다
procedure TForm1.WMDROPFILES( var Msg : TMessage );
var
i,
amount,
size : Integer;
Filename : PChar;
S : String;
begin
inherited;
Amount := DragQueryFile( Msg.WParam, $FFFFFFFF, Filename, 255 );
for i := 0 to ( Amount - 1 ) do
begin
size := DragQueryFile( Msg.WParam, i , nil, 0 ) + 1;
Filename := StrAlloc( size );
DragQueryFile( Msg.WParam,i , Filename, size );
s := Extractfileext( Filename );
if s <> '.bmp' then
exit
else
listbox1.items.add( String( Filename ) );
StrDispose( Filename );
end;
DragFinish( Msg.WParam );
end;
4. File의 Drag & Drop을 시스템에 알리기 위해서
DragAcceptFiles( Form1.Handle, true );
를 폼의 생성이나 기타 등등 적당한 곳에 기록한다
5. File의 Drag & Drop을 해제하기 위해서
DragAcceptFiles( Form1.Handle, false );
를 폼의 디스트럭션이나 적당한 곳에 기록한다.
ps : ㅋㅋㅋㅋㅋㅋㅋ.. 쉽져? ^^
|