文档章节

使MFC支持拖放文件的方法

_编程菜鸟_
 _编程菜鸟_
发布于 2013/09/14 15:41
字数 264
阅读 1508
收藏 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
Window下拖放操作Drag & Drop 全解析

一、基本概念 拖放,是指用鼠标拖动的方法,在不同程序的窗口之间、同一个程序的不同窗口之间或同一程序同一窗口的不同控件之间,进行移动、复制和粘贴等操作的技术。拖放操作是在操作系统的...

yousss
04/18
0
0
SWIG与JAVA 交互最全开发指南一

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

揽月凡尘
06/16
0
0
vc++windows编程技术(3)

从一开始就有两种编写windows应用程序的方法。第一种是使用win32定义的API函数,体现细节好。另一种是使用特殊的c++类库,它囊括了API,目前最流行的是MFC。两种方法的区别:所有windows应用...

mli
2014/10/23
0
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

(一)软件测试专题——之Linux常用命令篇01

本文永久更新地址:https://my.oschina.net/bysu/blog/1931063 【若要到岸,请摇船:开源中国 不最醉不龟归】 Linux的历史之类的很多书籍都习惯把它的今生来世,祖宗十八代都扒出来,美其名曰...

不最醉不龟归
21分钟前
3
0
蚂蚁金服Java开发三面

8月20号晚上8点进行了蚂蚁金服Java开发岗的第三面,下面开始: 自我介绍(要求从实践过程以及技术背景角度着重介绍) 实习经历,说说你在公司实习所做的事情,学到了什么 关于你们的交易平台...

edwardGe
28分钟前
7
0
TypeScript基础入门 - 函数 - this(三)

转载 TypeScript基础入门 - 函数 - this(三) 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.4 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban
38分钟前
0
0
Spark core基础

Spark RDD的五大特性 RDD是由一系列的Partition组成的,如果Spark计算的数据是在HDFS上那么partition个数是与block数一致(大多数情况) RDD是有一系列的依赖关系,有利于Spark计算的容错 RDD中每...

张泽立
45分钟前
0
0
如何搭建Keepalived+Nginx+Tomcat高可用负载均衡架构

一.概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已...

Java大蜗牛
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部