以多文档为例:
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); } |
本文介绍如何在应用程序中实现文件拖放功能,并在响应WM_DROPFILES消息时处理多文档,包括打开指定文件和对特定文件后缀进行过滤。
1237

被折叠的 条评论
为什么被折叠?



