Windows文件拖放

Windows文件拖放

近日要實現文件拖放,如果只實現接收則較為簡單,下麵把實現原理記下.

  1. 令主窗口可以接受文件拖放::DragAcceptFiles(hWnd,TRUE);
  2. 處理WM_DROPFILES消息wParam為HDROP文件拖放句柄
  3. 獲取拖放文件的個數::DragQueryFile(hdrop,-1,NULL,0);
  4. 獲取拖放文件的路徑DragQueryFile(hdrop,File_Index,File_Path,sizeof(File_Path));
  5. 處理拖放文件File_Path
  6. 重複第四第五步提取拖放文件的路徑
  7. 釋放拖放空間::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;

}

評論