將文件拖曳到窗體上, 並獲取其完整路徑 【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中, 添加代碼spa

FormCreate事件響應中:.net

 

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

 

最重要的處理函數HandleDropFiles:orm

 

[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. }  
相關文章
相關標籤/搜索