接受外部拖动

王朝other·作者佚名  2006-09-16
窄屏简体版  字體: |||超大  

最近在CSDN经常碰到有人问如何在DELPHI编程的时候,让程序接受外部拖动而来的内容并处理。

就是处理wm_dropfiles消息以及使用DragAcceptFiles、dragqueryfile、dragfinish来操作,这些内容在DELPHI中被封装在shellapi中,编程的时候,要uses这个单元。

在这里用一个例子演示,以后再回答此问题的时候就不用再写了。

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls,shellapi;//要使用到shellapi中的内容

type

TForm1 = class(TForm)

Memo1: TMemo;

Label1: TLabel;

procedure FormCreate(Sender: TObject);

private

//处理WM_DROPFILES消息

procedure dragdropfile(var msg : tmessage);message wm_dropfiles;

public

...{ Public declarations }

end;

var

Form1: TForm1;

implementation

...{$R *.dfm}

procedure TForm1.dragdropfile(var msg: tmessage);

var

char1:array[0..128] Of char;

char2 : pchar;

i,sum :integer;

begin

//获得拖动的数量

sum := dragqueryfile(msg.wparam,$FFFFFFFF,nil,0);

//用一个label显示此数量

label1.caption := inttostr(sum);

char2 := @char1;

for i := 0 to sum-1 do

begin

//将拖动文件的路径存放到char2并通过一个memo来显示

DragQueryFile(msg.wparam,i,char2,128);

memo1.lines.add(char2);

end;

dragfinish(msg.wparam);//结束

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

//让程序接受外部拖动

DragAcceptFiles(Handle,true);

end;

end.

注:WINXP+D7,转载请注明出处

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航