文档章节

使MFC支持拖放文件的方法

_编程菜鸟_
 _编程菜鸟_
发布于 2013/09/14 15:41
字数 264
阅读 1510
收藏 5

在目标dialog关联的类的.h里添加//注意控件和对话框属性都不要选Accept Files

afx_msg void OnDropFiles(HDROP hDropInfo);
void PreSubclassWindow() ;

相应的.cpp里添加

BEGIN_MESSAGE_MAP(Unrar, CDialog)
 ON_WM_DROPFILES()//这句话很重要
END_MESSAGE_MAP()

 

void Unrar::PreSubclassWindow() 
{
  DragAcceptFiles( TRUE );
  
  CWnd::PreSubclassWindow();
}
void Unrar::OnDropFiles(HDROP hDropInfo){
   this->UpdateData(TRUE);
   CRect  rEdit;   
   
m_edit1.GetWindowRect(rEdit);//获得控件的坐标
   POINT   pos;   
   
::GetCursorPos(&pos);  //获得光标当前的屏幕坐标   
   
//如果光标在edit控件中,则显示拖动的文件名,进行响应操作;否则就什么都不作   
   TCHAR   cFileName[256];   

   UINT   uFileCount,   u;   
   uFileCount   =   
::DragQueryFile(hDropInfo,   -1,     
   cFileName,   sizeof(cFileName));   
//拖拉的文件个数 
  
   if((pos.x   >   rEdit.left)   &&   (pos.x     
<   rEdit.right)     
   &&   (pos.y   <   rEdit.bottom)   
&&   (pos.y   >   rEdit.top))   
   {   
    for(u   =   0;u <  uFileCount;   u++){   
     ::DragQueryFile(hDropInfo,   u,   
      cFileName,   sizeof(cFileName));   //取得每个文件的文件名   
     
      m_edit1.SetWindowText(cFileName);   //如果指针在edit1里的话那么就把路径在edit1里显示
    }   

    ::DragFinish(hDropInfo);   
   } 
   else{
      for(u   = 0;   u   <   uFileCount;   u++){   
     ::DragQueryFile(hDropInfo,   u,   
cFileName,   sizeof(cFileName));   //取得每个文件的文件名   
     
m_edit2.SetWindowText(cFileName);   如果指针不在edit1里的话那么就把路径在edit2里显示

    }   

    ::DragFinish(hDropInfo);   
   }
} 


本文转载自:http://blog.163.com/huangbingliang@yeah/blog/static/94161399201041092339499/

共有 人打赏支持
_编程菜鸟_
粉丝 3
博文 105
码字总数 14021
作品 0
武汉
第五部分:IDropTarget实现

这一节我们讲如何来实现一个自己的Drop Target,我们需要实现IDropTarget接口。 1.如何成为一个"Drop Target" 为了使窗体能接收拖放的数据,窗口必须注册为drop目标,调用OLE API RegisterD...

yousss
04/18
0
0
基于XP打造windows7的C++开发平台--vs2010+windows SDK for windows7

IT业是一个创造奇迹的行业,IT业也是一个年轻的行业,IT业更是一个不断更新的行业。在今年2009年,微软已经连续推出visual studio2010 beta1 与 visual studio2010 beta2 两个版本.在2010.2月...

junwong
2012/03/09
0
0
微软承诺将在今年的 Visual C++ 更新中加入 Clang 编译器

微软最近发布将在2015年11月 Visual C++ 更新中加入 Clang 编译器 ,Clang 开源编译器以相比GCC更快的编译速度和更优的错误提示著称。 Clang关于C,C++,及Objective C的编译器,能够生成LLV...

葡萄城控件技术团队
2015/10/27
0
0
SWIG与JAVA 交互最全开发指南一

项目背景 最近开始研究做移动端项目,但是本人基本是做了五六年的c++的底层研发,对C++的研发可以说是驾轻就熟了,但是对于android还是属于刚入门阶段,虽然断断续续做移动端也做了一年,但是...

揽月凡尘
06/16
0
0
关键词: 和

关键词:< iostream > 和 < iostream.h > 你写程序的时候,用< iostream >还是< iostream.h >? 你知道它们有什么区别么?还是认为他们根本就是一样的? 下面听我给你吹(文中纯属个人言论,...

AlphaJay
2010/06/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

992. Sort Array By Parity II - LeetCode

Question 992. Sort Array By Parity II Solution 题目大意:给一个int数组,一半是奇数一半是偶数,分别对偶数数和奇数数排序并要求这个数本身是偶数要放在偶数位上 思路:把奇数数和偶数数...

yysue
7分钟前
0
0
Snackbar源码分析

目录介绍 1.最简单创造方法 1.1 Snackbar作用 1.2 最简单的创建 1.3 Snackbar消失的几种方式 2.源码分析 2.1 Snackbar的make方法源码分析 2.2 对Snackbar属性进行设置 2.3 Snackbar的show显示...

潇湘剑雨
39分钟前
1
0
分布式作业系统 Elastic-Job-Lite 源码分析 —— 作业数据存储

分布式作业系统 Elastic-Job-Lite 源码分析 —— 作业数据存储 摘要: 原创出处 http://www.iocoder.cn/Elastic-Job/job-storage/ 本文基于 Elastic-Job V2.1.5 版本分享 1. 概述 本文主要分享...

DemonsI
45分钟前
1
0
jmockit demo

1、@Mocked,标识一个指定的class的实例或被测对象的参数被Mock掉。 2、@Capturing,标识一个被Mock的对象,从该对象派生的子类也被Mock了。 3、@Injectable,标识只有一个指定的被测对象的内...

我的老腰啊
59分钟前
1
0
内容换行

用 <textarea>13611112222 这里想换行 13877779999</textarea><textarea>13611112222 13877779999</textarea>...

小黄狗
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部