BCB筆記:將檔案拖曳到程式中開啟
拖曳檔案到程式中開啟,需要系統配合,而BCB沒有提供一個簡單的方法達成,因此就需要寫用win32api的功能,使BCB的程式也能將拖曳的檔案開啟。 1. 將下面這一段程式碼加主程式的 .H 檔的public函數/成員的最後面(放在最後面是方便管理),還有就是這段程式碼沒有寫錯,END_MESSAGE_MAP (TForm)的TFrom也不需要更改! void __fastcall WmDropFiles(TWMDropFiles& Message); BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_DROPFILES, TWMDropFiles, WmDropFiles) END_MESSAGE_MAP (TForm) 2. 接著切換到.CPP中,點擊點主視窗,並設定主視窗的Events的FormCreate,將下面的程式碼加入FromCreate中。 DragAcceptFiles(Handle, true); 3. 最後是寫開啟檔案的WmDropFiles函數內容。 void __fastcall TMainForm::WmDropFiles(TWMDropFiles& Message) { char buff[MAX_PATH]; HDROP hDrop = (HDROP)Message.Drop; int numFiles = DragQueryFile(hDrop, -1, NULL, NULL); if (numFiles >= 1) { for (int i=0 ; i<numFiles ; ++i) { DragQueryFile(hDrop, i, buff, sizeof(buff)); // 在這裡寫下開啟檔案的程式碼, buff就是檔案路徑的字串。 } } DragFinish(hDrop); }