エクスプローラなどからのファイルドロップ(VC++) エクスプローラなどからファイルを自分のアプリケーションのウィンドウズにドラッグアンドドロップできれば、格好がいいだけじゃなく、アプリケーションの操作もしやすくなります。DragAcceptFiles()などのAPI関数を使えば、エクスプローラなどからのファイルドロップが簡単に実現できます。 2.ドロップされた時の処理。 void CWndTest::OnDropFiles(HDROP hDropInfo) { static TCHAR FileName[MAX_PATH]; //ドロップされたファイルの数 int FileNum = DragQueryFile(hDropInfo, 0xffffffff, FileName, sizeof(FileName)); for(int i = 0; i < FileNum; i++) { //第i番目のファイル名を受け取る DragQueryFile(hDropInfo, i, FileName, sizeof(FileName)); //TODO:ドロップされたファイルのパスネームがFileNameに保存されています。 //FileNameを使って、ファイルを開いたりして処理できます。 } DragFinish(hDropInfo); } SDKでメッセージを処理する場合は、WM_DROPFILESというメッセージを受け取ったら、ドロップされたファイルの数とファイル名を調べしから、ファイルに関す る処理をします。WM_DROPFILESメッセージのwParamに、ドロップされたファイルを表す内部データ管理するハンドルを保存されています。HDROP hDropInfo= (HDROP)wParam; case WM_DROPFILES: ファイルがドロップされた時の処理 { HDROP hDropInfo=(HDROP)wParam; static TCHAR FileName[MAX_PATH]; int FileNum = DragQueryFile(hDropInfo, 0xffffffff, FileName, sizeof(FileName)); for(int i = 0; i < FileNum; i++) { DragQueryFile(hDropInfo, i, FileName, sizeof(FileName)); //TODO:ドロップされたファイルのパスネームがFileNameに保存されています。 //FileNameを使って、ファイルを開いたりして処理できます。 } DragFinish(hDropInfo); } break; |