近日要實現文件拖放,如果只實現接收則較為簡單,下麵把實現原理記下.
- 令主窗口可以接受文件拖放::DragAcceptFiles(hWnd,TRUE);
- 處理WM_DROPFILES消息wParam為HDROP文件拖放句柄
- 獲取拖放文件的個數::DragQueryFile(hdrop,-1,NULL,0);
- 獲取拖放文件的路徑DragQueryFile(hdrop,File_Index,File_Path,sizeof(File_Path));
- 處理拖放文件File_Path
- 重複第四第五步提取拖放文件的路徑
- 釋放拖放空間::DragFinish(hdrop);
int Query_DragAndDrop(HDROP hdrop,PROC_DRAGANDDROP Proc_DragAndDrop)
{
int File_Num;
TCHAR File_Path[2056];
int File_Index;
File_Num = ::DragQueryFile(hdrop,-1,NULL,0);// 獲取文件個數
for(File_Index = 0; File_Index < File_Num; ++File_Index)
{ // 獲取拖放文件
::DragQueryFile(hdrop,File_Index,File_Path,sizeof(File_Path));
Proc_DragAndDrop(File_Path);// 處理文件
}
::DragFinish(hdrop);// 釋放空間
return 1;
}