文档章节

使MFC支持拖放文件的方法

_编程菜鸟_
 _编程菜鸟_
发布于 2013/09/14 15:41
字数 264
阅读 1502
收藏 5
点赞 0
评论 0

在目标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
博文 104
码字总数 14021
作品 0
武汉
第五部分:IDropTarget实现

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

yousss ⋅ 04/18 ⋅ 0

SWIG与JAVA 交互最全开发指南一

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

揽月凡尘 ⋅ 06/16 ⋅ 0

大神有话说之c++,还在迷茫的朋友可以来看一下

C++ 是一种中级语言,它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言。C++ 可运行于多种平台上,如 Window...

悟空_b201 ⋅ 05/30 ⋅ 0

MFC功能扩展控件BCGSuite for MFC发布v27.1|附下载

BCGSuite for MFC是一款Visual Studio 2008/2010/2012/2013 的MFC功能扩展控件。虽然Visual Studio 2008中包含的新版MFC是基于BCGControlBar Pro技术的,但某些典型的控件如网格、日历、编辑...

Miss_Hello_World ⋅ 04/26 ⋅ 0

VS2010/MFC编程入门教程之目录和总结(鸡啄米)

鸡啄米的这套VS2010/MFC编程入门教程到此就全部完成了,虽然有些内容还未涉及到,但帮助大家进行VS2010/MFC的入门学习业已足够。以此教程的知识为基础,学习VS2010/MFC较为深入的内容已非难事...

weixin_40647819 ⋅ 05/23 ⋅ 0

Window下拖放操作Drag & Drop 全解析

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

yousss ⋅ 04/18 ⋅ 0

afx.h stdafx.h以及VS项目些许思考

一、 该头文件包含一些定义与设置,为MFC提供最基本的支持,将各种松散的东西组织起来,同时为MFC类库的后续建立提供方便。一个最简单的MFC只需要afxwin.h即可,而afxwin.h开始就是#include ...

gaoyz1 ⋅ 04/21 ⋅ 0

AndroidStudio3.0NDK输出多个so库

个人博客地址 http://dandanlove.com/ 前言 去年的 Android之NDK开发初体验 这篇文章讲述NDK开发环境的搭建,以及在AndroidStudio3.0版本之前的NKDK简单开发。这次升级到Android Studio3.1,...

静默加载 ⋅ 04/12 ⋅ 0

.a .framework打包注意事项

静态库中使用了C++混编 我们都知道在OC项目中使用了C++文件来混编的话,就会报如图所示的错误。其最快捷的解决方法就是将项目中的一个文件的.m后缀改成.mm。 如果在制作静态库时也使用了C++...

_故事的小黄瓜_ ⋅ 05/17 ⋅ 0

c语言编程软件有哪些 Win7下用哪种C语言编译器

C语言是一门历史很长的编程语言,其编译器和开发工具也多种多样,其开发工具包括编译器,现举几个开发工具供大家选择,当然也要根据自己的操作系统来选择适合自己的开发工具 好多刚开始接触c...

mini92 ⋅ 04/20 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从零开始搭建Risc-v Rocket环境---(1)

为了搭建Rocke环境,我买了一个2T的移动硬盘,安装的ubuntu-16.04 LTS版。没有java8,gcc是5.4.0 joe@joe-Inspiron-7460:~$ java -version程序 'java' 已包含在下列软件包中: * default-...

whoisliang ⋅ 21分钟前 ⋅ 0

大数据学习路线(自己制定的,从零开始学习大数据)

大数据已经火了很久了,一直想了解它学习它结果没时间,过年后终于有时间了,了解了一些资料,结合我自己的情况,初步整理了一个学习路线,有问题的希望大神指点。 学习路线 Linux(shell,高并...

董黎明 ⋅ 27分钟前 ⋅ 0

systemd编写服务

一、开机启动 对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件。 如果你想让该软件开机启动,就执行下面的命令(以httpd.service为例)。 ...

勇敢的飞石 ⋅ 29分钟前 ⋅ 0

mysql 基本sql

CREATE TABLE `BBB_build_info` ( `community_id` varchar(50) NOT NULL COMMENT '小区ID', `layer` int(11) NOT NULL COMMENT '地址层数', `id` int(11) NOT NULL COMMENT '地址id', `full_......

zaolonglei ⋅ 38分钟前 ⋅ 0

安装chrome的vue插件

参看文档:https://www.cnblogs.com/yulingjia/p/7904138.html

xiaoge2016 ⋅ 41分钟前 ⋅ 0

用SQL命令查看Mysql数据库大小

要想知道每个数据库的大小的话,步骤如下: 1、进入information_schema 数据库(存放了其他的数据库的信息) use information_schema; 2、查询所有数据的大小: select concat(round(sum(da...

源哥L ⋅ 今天 ⋅ 0

两个小实验简单介绍@Scope("prototype")

实验一 首先有如下代码(其中@RestController的作用相当于@Controller+@Responsebody,可忽略) @RestController//@Scope("prototype")public class TestController { @RequestMap...

kalnkaya ⋅ 今天 ⋅ 0

php-fpm的pool&php-fpm慢执行日志&open_basedir&php-fpm进程管理

12.21 php-fpm的pool pool是PHP-fpm的资源池,如果多个站点共用一个pool,则可能造成资源池中的资源耗尽,最终访问网站时出现502。 为了解决上述问题,我们可以配置多个pool,不同的站点使用...

影夜Linux ⋅ 今天 ⋅ 0

微服务 WildFly Swarm 管理

Expose Application Metrics and Information 要公开关于我们的微服务的有用信息,我们需要做的就是将监视器模块添加到我们的pom.xml中: 这将使在管理和监视功能得到实现。从监控角度来看,...

woshixin ⋅ 今天 ⋅ 0

java连接 mongo伪集群部署遇到的坑

部署mongo伪集群 #创建mongo数据存放文件地址mkdir -p /usr/local/config1/datamkdir -p /usr/local/config2/data mkdir -p /usr/local/config3/data mkdir -p /usr/local/config1/l......

努力爬坑人 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部