步骤如下,delphi 7测试通过
1、在uses 中增加 ShellAPI
2、增加拖拽的消息处理函数
3、指定接收拖拽的窗口句柄
说明:上面代码可以使窗口的任何部位都可以接收拖拽文件,包含菜单、按钮、工具条等,photo shop就是窗口的任何部分都可以接收拖拽文件。可以修改FormCreate中的
DragAcceptFiles(Handle, True)函数的第一个参数,这样可以指定一个小的区域来接收拖拽文件,比如一个listbox或memo等,这时需要修改
procedure
WMDROPFILES(
var
Msg : TMessage); message WM_DROPFILES; 因为该函数只是处理窗口的拖拽事件,而不处理子窗口的拖拽事件,一个变通的方式是做一个能够处理所有消息的函数,然后从中过滤出拖拽事件。
1、在uses 中增加 ShellAPI
2、增加拖拽的消息处理函数
- //声明
- protected
- procedure WMDROPFILES(var Msg : TMessage); message WM_DROPFILES;
- //实现
- procedure TForm1.WMDROPFILES(var Msg: TMessage);
- var a : Integer;
- Buffer: Array[0..255] of Char;
- begin
- a := DragQueryFile(Msg.wParam, $FFFFFFFF, Buffer, 255);
- for a := 0 to a - 1 do begin //处理选择多个文件
- DragQueryFile(Msg.wParam, a, Buffer, 255);
- //文件名就在Buffer里面了,
- ShowMessage(Buffer);
- end;
- DragFinish(Msg.wParam);
- end;
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- DragAcceptFiles(Handle, True);//使窗口句柄可以接收拖拽操作
- end;