文档章节

使MFC支持拖放文件的方法

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

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

yousss
04/18
0
0
vc++windows编程技术(3)

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

mli
2014/10/23
0
2
17 个 Linux 下用于 C/C++ 的最好的 IDE

C++,一个众所周知的 C 语言的扩展,是一个优秀的、强大的、通用编程语言,它能够提供现代化的、通用的编程功能,可以用于开发包括视频游戏、搜索引擎、其他计算机软件乃至操作系统等在内的各...

花仲马
2016/08/22
24.8K
49
大神有话说之c++,还在迷茫的朋友可以来看一下

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

悟空_b201
05/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

没什么启示的启示——《中国生存启示录》读后感4300字范文

没什么启示的启示——《中国生存启示录》读后感4300字范文: 文:夜晨1981。先后两次阅读这本书,第一次是2016年3月,第二次是2018年12月。读了两遍,都有一个理由,就是梁晓声这个名字。不知...

原创小博客
昨天
3
0
ubuntu常用操作

显卡GPU 查看显卡信息sudo lshw -numeric -class video# 查看显卡型号lspci | grep -i nvidia# 查看驱动版本sudo dpkg --list | grep nvidia-*或者 ubuntu-drivers devices#查看显卡...

hc321
昨天
2
0
mysql密码重置

方法一: 在my.ini的[mysqld]字段加入: skip-grant-tables 重启mysql服务,这时的mysql不需要密码即可登录数据库 然后进入mysql mysql>use mysql; mysql>更新 update user set password=pas...

architect刘源源
昨天
6
1
SpringBoot + Mybatis 配置多数据源(Srping boot 二)

前置条件,你已经配置好spring boot+mybatis,可以参考之前的博客 实现逻辑通过注解+aop切面编程来动态更新datasource 第一步,配置多个DataSource server: port: 8080freezing: ...

小海bug
昨天
13
0
连续潜在变量---概率PCA

最大似然PCA 用于PCA的EM算法 贝叶斯PCA 因子分解

中国龙-扬科
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部