DragAcceptFiles 拖放文件到多文档框架上

来源:互联网 发布:mysql 日期排序 选择 编辑:程序博客网 时间:2024/05/16 11:38
以多文档为例:
1.在应用程序类App的InitInstance()函数后面,添加以下代码:
1m_pMainWnd->DragAcceptFiles(TRUE); 
2.响应主框架类CMainFrame的WM_DROPFILES消息,添加如下代码:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15void 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); 
3.要对某些后缀名进行过滤,则修改如下:
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
26void 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); 
原创粉丝点击