您的位置:首页 > 编程语言 > Delphi

delphi 实现拖拽打开文件

2015-07-26 01:56 656 查看
步骤如下,delphi 7测试通过

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;

3、指定接收拖拽的窗口句柄

procedure TForm1.FormCreate(Sender: TObject);

begin

  DragAcceptFiles(Handle, True);//使窗口句柄可以接收拖拽操作

end;

说明:上面代码可以使窗口的任何部位都可以接收拖拽文件,包含菜单、按钮、工具条等,photo shop就是窗口的任何部分都可以接收拖拽文件。可以修改FormCreate中的DragAcceptFiles(Handle, True)函数的第一个参数,这样可以指定一个小的区域来接收拖拽文件,比如一个listbox或memo等,这时需要修改procedure WMDROPFILES(var Msg : TMessage); message WM_DROPFILES;
因为该函数只是处理窗口的拖拽事件,而不处理子窗口的拖拽事件,一个变通的方式是做一个能够处理所有消息的函数,然后从中过滤出拖拽事件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: