VC下在对话框上实现接受文件拖放 (Drop files)

大部分Windows应用工具程序都能响应接受文件拖放,比如Word,Notepad等

当把文件直接拖拽到该窗体或者是某个控件下,应用程序会直接打开这个文件,这样将极大的方便客户使用

本文就是介绍这个的实现,跟以前一样,不看到代码一定会很不爽:

1. 首先先将您的CDialog设置为Accept files,通过代码或者选项点击都可以实现

2. 添加函数声明和消息映射

href="http://www.j2megame.org/wupei/plugins/plogeshi/styles/plogeshi.css" type="text/css" rel="stylesheet" />

 

  1. //添加事件声明(尽量写在"AFX_MSG"宏外面.我记得写在里面会出现错误)
  2. afx_msg void OnDropFiles ( HDROP hDropInfo );
  3.  
  4. //添加消息映射(尽量写在"AFX_MSG_MAP"宏外面.我记得写在里面会出现错误)
  5. ON_WM_DROPFILES ( )

 

3. 下一步就是函数的实现

 

  1. //实现(WINDOWS系统是支持多个文件同时拖放的)
  2. void CMyDlg:: OnDropFiles ( HDROP hDropInfo )
  3. {
  4.         UINT cFiles = :: DragQueryFile ( hDropInfo, 0xffffffff, 0, 0 );    //取得文件数
  5.         CString szText;
  6.         char szFile [MAX_PATH ];
  7.  
  8.         for ( UINT count = 0; count < cFiles; count++ )
  9.         {
  10.                 if (cFiles> 0 )
  11.                 {
  12.                         :: DragQueryFile (hDropInfo, count, szFile, sizeof (szFile ) );
  13.                         szText += szFile;        //绝对路径+文件名存于szFile
  14.                         szText += "/r/n";        //取所有的文件到szText中,一行一个
  15.                        
  16.                         //break;   //只取得第一个文件
  17.                 }
  18.         }
  19.        
  20.         //相应操作
  21. }

 

ps: 现在这个实现只实现Dialog的拖放操作,未能实现特定控件的拖放操作,但是理论上是可以用这个实现的,因为一般都是CWnd的子类(有些控件不是),那就请读者自己实现一把了

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值