大部分Windows應用工具程序都能響應接受文件拖放,比如Word,Notepad等
當把文件直接拖拽到該窗體或者是某個控件下,應用程序會直接打開這個文件,這樣將極大的方便客戶使用
本文就是介紹這個的實現,跟以前一樣,不看到代碼一定會很不爽:
1. 首先先將您的CDialog設置爲Accept files,通過代碼或者選項點擊都可以實現
2. 添加函數聲明和消息映射
href="http://www.j2megame.org/wupei/plugins/plogeshi/styles/plogeshi.css" type="text/css" rel="stylesheet" />
-
//添加事件聲明(儘量寫在"AFX_MSG"宏外面.我記得寫在裏面會出現錯誤)
-
afx_msg void OnDropFiles( HDROP hDropInfo );
-
-
//添加消息映射(儘量寫在"AFX_MSG_MAP"宏外面.我記得寫在裏面會出現錯誤)
-
ON_WM_DROPFILES()
3. 下一步就是函數的實現
-
//實現(WINDOWS系統是支持多個文件同時拖放的)
-
void CMyDlg::OnDropFiles( HDROP hDropInfo )
-
{
-
UINT cFiles = ::DragQueryFile( hDropInfo, 0xffffffff, 0, 0); //取得文件數
-
CString szText;
-
char szFile[MAX_PATH];
-
-
for( UINT count = 0; count < cFiles; count++ )
-
{
-
if(cFiles>0)
-
{
-
::DragQueryFile(hDropInfo, count, szFile, sizeof(szFile));
-
szText += szFile; //絕對路徑+文件名存於szFile
-
szText += "/r/n"; //取所有的文件到szText中,一行一個
-
-
//break; //只取得第一個文件
-
}
-
}
-
-
//相應操作
-
}
ps: 現在這個實現只實現Dialog的拖放操作,未能實現特定控件的拖放操作,但是理論上是可以用這個實現的,因爲一般都是CWnd的子類(有些控件不是),那就請讀者自己實現一把了