将文件拖曳到窗体上, 并获取其完整路径 【C++ Builder下实现】

1. 在窗体的头文件.h里声明处理函数和消息映射, 如:

class TForm1 : public TForm { ... void __fastcall HandleDropFiles(TMessage &Owner; ... BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_DROPFILES,TMessage,HandleDropFiles) END_MESSAGE_MAP(TForm) }; 

 

 

2. 在窗体的实现文件.cpp中, 添加代码

FormCreate事件响应中:

 void __fastcall TForm1::FormCreate(TObject *Sender) { ... DragAcceptFiles(Handle,true); ... } 

最重要的处理函数HandleDropFiles:

void __fastcall TForm1::HandleDropFiles(TMessage &msg) { char FileName[_MAX_PATH]; int i, Sum; // 获得拖拉的文件数目,该功能由第二个参数决定 Sum = DragQueryFile(HDROP(msg.WParam), 0xFFFFFFFF, NULL, 0); if(Sum > 0) { // 这里只要第一个文件 DragQueryFile(HDROP(msg.WParam), 0, FileName, _MAX_PATH); // 将文件路径显示于窗体上的Text控件 txtPath->Text = AnsiString(FileName); } // 释放应用程序为传递文件名而开辟的内存空间 DragFinish( HDROP(msg.WParam) ); }  

你可能感兴趣的:(C++,null,Class,Path)