如何让某个文件拖到我所做的并运行中的程序的窗口放开后获取文件路径及文件名

huiwww 2004-05-05 11:43:09
如何让某个文件拖到我所做的并运行中的程序的窗口放开后获取文件路径及文件名,最好提供代码,谢谢
...全文
73 5 点赞 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
huiwww 2004-05-05
c++ builder?懂部分,但不是全部,在delphi里没有DropFile(TWMDropFiles &Msg)事件,帮自己up一下
  • 打赏
  • 举报
回复
bottom 2004-05-05
void __fastcall DropFile(TWMDropFiles &Msg);
//---------消息映射----------------------------
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(MYWM_NOTIFY,TMessage,MyNotify)
MESSAGE_HANDLER(WM_DROPFILES,TWMDropFiles,DropFile)
END_MESSAGE_MAP(TForm)
//---------消息映射--------------------------------------
  • 打赏
  • 举报
回复
bottom 2004-05-05
void __fastcall TForm1::FormShow(TObject *Sender)
{
DragAcceptFiles(this->Handle ,true);
}

void __fastcall TForm1::DropFile(TWMDropFiles &Msg)
{
String FileName;
String FileStr;
int i;
if (tv1->Items->Count ==0)
{
MyMsgBox("没有分类,不能添加","*_*",2);
return;
}
TTreeNode * cnode ;
int DropCount=DragQueryFile((HDROP)Msg.Drop,0xFFFFFFFF,NULL,0 );

FileName.SetLength(256);

TfrmDrop1 *tmpfrm=new TfrmDrop1(NULL);
tmpfrm->canadd =false;
tmpfrm->lb1->Items->Clear() ;

for (i=0;i<DropCount;i++)
{ //1
DragQueryFile((HDROP)Msg.Drop,i,FileName.c_str() ,FileName.Length() );
tmpfrm->lb1->Items->Add(FileName) ;
} //2
DragFinish((HDROP)Msg.Drop);
tmpfrm->ShowModal() ;


  • 打赏
  • 举报
回复
hewei2003 2004-05-05
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,ShellAPI,
StdCtrls, MPlayer;

type
TForm1 = class(TForm)
Label1: TLabel;
ListBox1: TListBox;
private
{ Private declarations }
public
{ Public declarations }
protected
procedure CreateParams(var Params:TCreateParams);override;
procedure WMDropFiles(var Message:TWMDropFiles);message WM_DropFiles;
end;

var
Form1: TForm1;

implementation


{$R *.DFM}

//重载CreateParams方法
procedure TForm1.CreateParams(var Params:TCreateParams);
begin

inherited CreateParams(Params);
Params.ExStyle:=Params.ExStyle or WS_EX_ACCEPTFILES;
end;

//响应WM_DROPFILES消息
procedure TForm1.WMDropFiles(var Message:TWMDropFiles);
var
FNumFiles,i,BufSize:Integer;
FFilePath:array of char;
FFileName:string;
begin
//取得文件个数
FNumFiles:=DragQueryFile(Message.Drop,$FFFFFFFF,nil,0);
//处理各个文件
for i:=0 to FNumFiles-1 do
begin
//获得存放文件名buffer的大小
BufSize:=DragQueryFile(Message.Drop,i,nil,0);
//获得文件名。文件名是以0结尾的字符串,包含路径。
SetLength(FFilePath,BufSize+1);
DragQueryFile(Message.Drop,i,PChar(FFilePath),BufSize+1);
//将文件名加入到listbox1中
listbox1.Items.Add(PChar(FFilePath));
end;
DragFinish(Message.drop);
end;

end.

My Email:cqhw2003@126.com
  • 打赏
  • 举报
回复
SeaWave 2004-05-05
这个不能说是DropFile事件,呵呵,不能这么说

这是由WINDOWS发出的消息WM_DROPFILES,DELPHI里也能捕获这个消息:

procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
  • 打赏
  • 举报
回复
相关推荐
发帖
Windows SDK/API
加入

1163

社区成员

Delphi Windows SDK/API
申请成为版主
帖子事件
创建了帖子
2004-05-05 11:43
社区公告
暂无公告