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

转载 2013年12月04日 19:44:19
以多文档为例:
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); 


转自:http://blog.csdn.net/akof1314/article/details/7206082

c#窗体支持多个文件拖放的代码实现

       //在Form的属性中要设置 AlowDrop为true        private void Form1_DragEnter(object sender, DragEventArgs...
  • ZHENNIUBILE
  • ZHENNIUBILE
  • 2010年08月02日 13:21
  • 1239

MFC单文档实现文件拖拽功能

其实实现的原理很简单,就是让程序响应和处理WM_DROPFILES消息。主要用到三个函数: VOID DragAcceptFiles( HWND hWnd, BOOL...
  • zy_dreamer
  • zy_dreamer
  • 2013年04月27日 14:54
  • 1258

左右上中下框架界面

var myData1 = [         ['委托下单']                      ];         var store1 = Ext.create('Ext.dat...
  • lonestar555
  • lonestar555
  • 2011年11月25日 18:13
  • 1374

C# 多文档界面的实现

      首先创建一个“Windows应用程序”,创建一系列窗体,其中之一为主窗体,姑且叫做“MainFrom”,设置其“IsMdiContainer”属性为“ture”,意思是可以容纳多个Form...
  • ruiqi317
  • ruiqi317
  • 2011年06月19日 10:10
  • 2876

C#WinForm 文件的拖放到指定控件

一、实现方案 1.首先对拖放到的控件的AllowDrop属性设置为ture。 2.添加控件的DragEnter事件,该事件会在文件被拖放到控件的工作区时触发。 3.在DragEnter事件方法中...
  • wangwei6125
  • wangwei6125
  • 2017年06月18日 16:23
  • 815

控制台程序实现拖曳运行支持

TCHAR *acDataFile = new TCHAR[MAX_PATH];TCHAR *acTmp = new TCHAR[MAX_PATH];TCHAR *acSourceF...
  • garfieldking
  • garfieldking
  • 2009年12月07日 23:44
  • 412

向表单拖放文件,文件路径及名称显示到列表框中(更简单的方法)

  向表单拖放文件,文件路径及名称显示到列表框中 *------------------------------------------ By:dkfdtf 之前用API实现过,不过这个更简单,利于V...
  • apple_8180
  • apple_8180
  • 2008年12月22日 16:25
  • 2838

HTML5 File API:把文件从桌面拖放到 Web

HTML5 让 HTML 这个一度单纯的置标语言焕发出成熟的魅力,使之成为 Web 开发者的强力工具,W3C 近日又推出一个新草案,HTML5 File API,这个 API 将让大大改善基于 Web...
  • comsharp
  • comsharp
  • 2009年08月17日 07:36
  • 4188

关于在不同程序间拖放文件的实践记录

由于最近的一个项目需要实现与其它程序的文件拖放(拖进/拖出),而手上没有现成的控件.在网络上也找不到合适的原代码.因此,决定自己做了一个.它是继承于TLlistView类的.对于拖进文件可以用简单的函...
  • lother
  • lother
  • 2006年11月02日 12:42
  • 1031

Delphi : 文件的拖放和打开,拖拽

user shellapi type TForm1 = class(TForm) ListView1: TListView; procedure FormCreate(Sender: TObj...
  • wozengcong
  • wozengcong
  • 2015年07月26日 01:54
  • 1374
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DragAcceptFiles 拖放文件到多文档框架上
举报原因:
原因补充:

(最多只允许输入30个字)