在Delphi中支持文件拖放的程序 黄慧强 1998年 第27期 13版   Windows中应用程序间的文件拖放操作非常简单、快捷、实用,通常我们在Windows中做拷贝、移动文件操作时,常常是使用支持文件拖放的程序来进行,如Windows 3.X中的文件管理器,Windows 95资源管理器等。实现文件拖放并不复杂,以下面的例子来简单说明它的原理:   文件管理器或资源管理器向程序Project1发一个WM_ DROPFILES消息,Project1获取WM_ DROPFILES消息后调用WinAPI函数DragAcceptFiles()、DragQueryFile()处理WM_ DROPFILES消息。   以下是用Delphi实现这个功能的过程:   1.新建一个工程Project1,在Unit1的uses保留字后加上ShellApi单元。   2.在Form1的OnCreate事件中添加下面一行,使Form1可以接收WM_ DROPFIELS消息。   DragAcceptFiles(Form1.Handle, True);   3.从构件面板上拖一个Memo1到Form1上,设Memo1的Align属性为alClient。   4.在Form1的公有域添加如下代码,声名一个处理WM_ DROPFIELS消息的过程。   public   {Public declarations}   procedure WMDropFiles(var message:TMessage);message WM_ DROPFILES;   end;   5.在implementation后面编写过程WMDropFiles()的代码。   procedure Tform1.WMDropFiles(var message:TMessage);   var   P:array[0..254] of Char;   I:word;   begin   Inherited;   Memo1.Lines.Clear;   {$IFDEF WIN32}   I:=DragQueryFile(Message.wParam,$ffffffff,nil,0);   {$ELSE}   I:=DragQueryFile(Message.wParam,$ffff,nil,0);   {$ENDIF}   Caption:=IntToStr(i);   for I:=0 to I-1 do   begin   DragQueryFile(Message.wParam,I,P,255);   Memo1.Lines.Add(StrPas(P));   end;   end;   运行Project1,从Windows 3.X的文件管理器或Windows 95中的资源管理器里拖一些文件或目录到Project1窗口上,释放鼠标左键后可以看到Project1窗口标题上显示了拖放文件或者目录的数目,并且Memo1详细列出这个文件或目录的全路径名。