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

以多文档为例:
1.在应用程序类App的InitInstance()函数后面,添加以下代码:
1
m_pMainWnd->DragAcceptFiles(TRUE); 
2.响应主框架类CMainFrame的WM_DROPFILES消息,添加如下代码:
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); 
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
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); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值