利用浏览窗口 DragDrop 任意文件
2008-04-09 04:18:03来源:互联网 阅读 ()
它们的函数原形如下:
VOID DragAcceptFiles(
HWND hWnd, // 接受拖拽文件窗口的句柄
BOOL fAccept // 接受条件
true = 打开,false = 关闭
);
UINT DragQueryFile(
HDROP hDrop, // 指向 DragDrop 结构的指针
UINT iFile, //
拖拽文件的索引
LPTSTR lpszFile, // 文件名字串缓冲
UINT cch // 文件名长度
);
VOID DragFinish(
HDROP hDrop // 释放 DragDrop
的内存块
);
从浏览窗口获取一个 DragDrop 文件的流程为:首先用 DragAcceptFiles 函数激活接受窗口的
DragFropAcceptance 属性,然后重载 Windows 的 WM_DROPFILES 消息,在 WM_DROPFILES
消息处理机制里利用 DragAcceptFiles函数分析拖拽文件的详细情况。最后释放掉 DragDrop 结构的内存块,在 WM_DROPFILES
消息的 WParam 参数就指向这个 DragDrop 的内存地址。当 DragDrop 的文件数不止一个时,只消简单的循环 DragQueryFile
就行。
范例:
unit Unit1;
interface
uses
Windows, Messages, SysUtils,
Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
procedure
FormCreate(Sender: TObject);
protected
procedure WMDROPFILES (var Msg:
TMessage); message WM_DROPFILES; //重载 Windows 的 WM_DROPFILES 消息
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
uses shellapi;
{$R *.DFM}
procedure TForm1.WMDROPFILES (var Msg: TMessage);
var i,nfiles,
size : integer;
Dateiname : PChar;
begin
inherited;
nfiles := DragQueryFile(Msg.WParam, $FFFFFFFF, Dat ame, 255);
// nfiles 保存 DragDrop 的文件数
for i := 0 to (nfiles - 1) do begin
size :=
DragQueryFile(Msg.WParam, i , nil, 0) 1; // 先知道文件名长度
Dateiname:=
StrAlloc(size);
DragQueryFile(Msg.WParam,i , Dateiname, size);
listbox1.items.add(StrPas(Dateiname));
StrDispose(Dateiname);
end;
DragFinish(Msg.WParam);
end;
procedure TForm1.FormCreate(Sender:
TObject);
begin
DragAcceptFiles( Handle, true );
end;
end.
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:获取当前鼠标位置的类名和句柄
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash