VC实现拖放文件到对话框中的多个Edit编辑控件,并显示其内容

网上的拿来主义只适用于Dialog有一个Edit控件的场合。多个Edit控件就没办法了(像下面这种小窗口,有两个编辑框的,就没有),所以特别写一下多个Edit如何实现拖放文件

这里以VS2017为例,其他版本的VS大同小异

单个Edit控件可以由CDialog传消息,多个Edit就只能由Edit本身来响应了。所以要重载Edit控件。

 

先要设置Edit控件可以接受文件拖放,如下图

然后到资源视图里,右键点对话框,添加类,如下图

选添加MFC类

输入类名文件吗,基类当然是CEdit

再回到刚才类向导,选择WM_DROPFILES,添加处理程序

不用理会最下面的说明,是错的。什么时候微软也用google翻译了。。。。。

 

到我们刚才建立的CMyDropEdit.cpp文件里,OnDropFiles函数已经有了

 

//CMyDropEdit.cpp文件

void CMyDropEdit::OnDropFiles(HDROP hDropInfo)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	WORD wNumFiles = DragQueryFile(hDropInfo, -1, NULL, 0);
	CString fileText = _T("");
	TCHAR path[MAX_PATH + 1] = { 0 };
    //获取拖放文件路径
	WORD wPathnameSize = DragQueryFile(hDropInfo, 0, path, MAX_PATH);

	DragFinish(hDropInfo);
    //读取文件内容
	FILE* fp = NULL;
	fp = _tfopen(path, _T("rb"));
	DWORD dwRead = 0;
	while ((dwRead = fread(path, 1, MAX_PATH, fp)) != 0)
	{
		path[dwRead] = 0;
		fileText += path;
	}
    //设定读出的文件内容到文本框
	SetWindowText(fileText);
	//CEdit::OnDropFiles(hDropInfo);
}

添加控件定义

//CxxxDlg.h文件
.....    
#include "CMyDropEdit.h"

.....

	CMyDropEdit m_myDropEdit1;
	CMyDropEdit m_myDropEdit2;

然后要将控件进行绑定

//CxxxDlg.cpp 文件
.....
	DDX_Control(pDX, IDC_EDIT1, m_myDropEdit1);
	DDX_Control(pDX, IDC_EDIT2, m_myDropEdit2);

这样就大功告成了,可以向2个edit拖放不同的文件,然后显示内容

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值