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

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

[cpp]  view plain  copy
 
  1. class TForm1 : public TForm  
  2. {  
  3. ...  
  4.     void __fastcall HandleDropFiles(TMessage &Owner;  
  5. ...  
  6.     BEGIN_MESSAGE_MAP  
  7.         MESSAGE_HANDLER(WM_DROPFILES,TMessage,HandleDropFiles)  
  8.     END_MESSAGE_MAP(TForm)  
  9. };  

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

FormCreate事件响应中:

[cpp]  view plain  copy
 
  1. void __fastcall TForm1::FormCreate(TObject *Sender)  
  2. {  
  3. ...  
  4.     DragAcceptFiles(Handle,true);  
  5. ...  
  6. }  

最重要的处理函数HandleDropFiles:

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

猜你喜欢

转载自www.cnblogs.com/hanny/p/9028489.html