以多文档为例:
1.在应用程序类App的InitInstance()函数后面,添加以下代码:
2.响应主框架类CMainFrame的WM_DROPFILES消息,添加如下代码:
3.要对某些后缀名进行过滤,则修改如下:
1.在应用程序类App的InitInstance()函数后面,添加以下代码:
1 |
| m_pMainWnd->DragAcceptFiles(TRUE); |
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 |
| void CMainFrame::OnDropFiles(HDROP hDropInfo) { SetActiveWindow(); // activate us first ! UINT nFiles = ::DragQueryFile(hDropInfo, (UINT)-1, NULL, 0); CWinApp* pApp = AfxGetApp(); ASSERT(pApp != NULL); for (UINT iFile = 0; iFile < nFiles; iFile++) { TCHAR szFileName[_MAX_PATH]; ::DragQueryFile(hDropInfo, iFile, szFileName, _MAX_PATH); pApp->OpenDocumentFile(szFileName); } ::DragFinish(hDropInfo); } |
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
| void CMainFrame::OnDropFiles(HDROP hDropInfo) { SetActiveWindow(); // activate us first ! UINT nFiles = ::DragQueryFile(hDropInfo, (UINT)-1, NULL, 0); CWinApp* pApp = AfxGetApp(); ASSERT(pApp != NULL); for (UINT iFile = 0; iFile < nFiles; iFile++) { TCHAR szFileName[_MAX_PATH]; ::DragQueryFile(hDropInfo, iFile, szFileName, _MAX_PATH); LPTSTR pszExtension = PathFindExtension(szFileName); if (pszExtension != NULL && *pszExtension == _T('.')) { _tcslwr_s(pszExtension, _tcslen(pszExtension) + 1); if (0 == _tcscmp(pszExtension, _T(".exe")) || 0 == _tcscmp(pszExtension, _T(".chm"))) { AfxMessageBox(_T("不支持的文件类型!")); } else pApp->OpenDocumentFile(szFileName); } } ::DragFinish(hDropInfo); } 转自:http://blog.youkuaiyun.com/akof1314/article/details/7206082 |