`

MFC窗口支持文件拖入

 
阅读更多

修改对话框属性为Accept Files
或者在初始化时直接通过函数DragAcceptFiles()使得窗口支持文件拖曳
然后,增加对话框窗口的WM_DROPFILES消息响应函数

单个文件:

OnDropFiles(HDROP hDropInfo)
{
	char * pFilePath = new char[256];
	::DragQueryFile(hDropInfo, 0, pFilePath, 256);  // 获取拖放第一个文件的完整文件名
	CString m_FilePath;
	m_FilePath.Format("%s", pFilePath);
	delete[] pFilePath;
/*
	CString m_FilePath;
	::DragQueryFile(hDropInfo, 0, m_FilePath.GetBuffer(256), 256);
	m_FilePath.ReleaseBuffer();
*/
	::DragFinish(hDropInfo);   // 注意这个不能少,它用于释放Windows 为处理文件拖放而分配的内存
}



多个文件:

OnDropFiles(HDROP hDropInfo)
{
	int  nFileCount = ::DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 256);   //获取拖入的文件数量


	char * pFilePath = new char[256];
	for (int i=0; i<nFileCount; i++)
	{
		UINT nChars = ::DragQueryFile(hDropInfo, i, pFilePath,256);   // 获取拖入的第i个文件的文件名
		CString m_FilePath(pFilePath, nChars); 
	}
	delete[] pFileFilePath;
/*
	CString * m_FilePath = new CString[nFileCount];
	for (int i=0; i<nFileCount; i++)
	{
		UINT nChars = ::DragQueryFile(hDropInfo, i, m_FilePath[i].GetBuffer(256),256);   // 获取拖入的第i个文件的文件名
		m_FilePath[i].ReleaseBuffer();
	}
*/
	::DragFinish (hDropInfo);
}



分享到:
评论

相关推荐

    MFC 拖曳文件获得文件路径

    `OnDropFiles`函数会在用户释放鼠标时被调用,此时文件已经被拖放到窗口上,我们需要在这个函数中获取文件路径并进行处理。`OnDragEnter`和`OnDragOver`用于处理拖动进入和在窗口上移动的过程,`OnDragLeave`则是在...

    文件拖动并打开文件,将文件拖入窗口即可打开文件

    当用户将文件从资源管理器或其他位置拖放到我们的应用程序窗口时,Windows会发送一个WM_DROPFILES消息。我们需要注册一个消息处理函数来处理这个特定的消息。 3. **HDROP结构体**: WM_DROPFILES消息的wParam参数...

    MFC文件拖拽功能实现

    4. **处理拖入事件**:在`COleDropTarget::Drop`函数中,你需要解析拖放的数据。`Drop`函数会接收到一个`HDROP`类型的参数,你可以使用`DragQueryFile`函数获取拖放的文件名,并通过`DragQueryFileCount`得知有多少...

    MFC文件拖放Demo

    实现拖放功能后,确保在实际环境中进行测试,检查文件是否能正确地被拖放到对话框上,以及拖放操作是否触发了预期的处理逻辑。 8. **性能优化** 在处理大量文件或大型文件时,需要注意性能优化,比如避免在`...

    vc实现拖入文件打开

    总结来说,实现“vc实现拖入文件打开”的核心步骤包括启用拖放支持、实现IDropTarget接口、处理IDataObject中的文件数据以及在文件被拖放时显示文件路径。这个过程涉及到了MFC的消息处理机制、COM组件接口以及...

    Windows界面编程第七篇 文件拖拽(文件拖放)

    《Windows界面编程第七篇 文件拖拽(文件拖放)》 http://blog.csdn.net/morewindows/article/details/8634451 配套程序。 使程序支持将文件拖入窗口的功能。Win32或MFC均能使用。

    MFC button双击事件响应

    MFC封装了Windows API,使得开发人员能够更容易地处理窗口、控件和其他用户界面元素。本教程将深入讲解如何在MFC应用中处理Button控件的双击事件。 在Windows GUI编程中,事件是用户与应用程序交互的关键机制。例如...

    对话框支持文件拖动操作,显示文件路径

    当用户将文件或文件夹拖入对话框时,程序需要捕获这一事件并解析拖放的数据。在Windows API中,我们可以使用`DragAcceptFiles`函数使窗口接受拖放操作,并注册`WM_DROPFILES`消息来处理文件的释放。在接收到此消息后...

    MFC中使用Ribbon教程

    在Ribbon设计器中,选择您刚刚添加的按钮,然后在属性窗口中找到**单击**事件,并为其指定一个处理函数,如`OnRibbonButtonClick`。 2. **实现事件处理函数**。在相应的CWinApp或CDialog类中,添加如下代码: ```...

    三角形的,OLE拖入,大家可以根据需求修改成自己想要的

    这个【标题】提及的“三角形的,OLE拖入”可能是指一个MFC(Microsoft Foundation Classes)应用示例,展示了如何通过OLE技术在用户界面中动态地插入和操作三角形图形。 MFC是微软提供的一套C++库,用于简化Windows...

    MFC数字图像处理(BMP格式读取 保存 DFT FFT 直方图 色调均化 缩放 模糊 锐化 滤镜 形态学处理 曲线 裁剪 灰度图 彩色图 自动阈值)

    使用MFC在VS2013编写的数字图象处理软件,能够实现相当强大的功能。 BMP格式读取 保存 DFT FFT 直方图 色调均化 缩放 模糊 锐化 滤镜 形态学处理 曲线 裁剪 灰度图 彩色图 自动阈值 等等...除此之外还有很多其他小...

    窗口和几个控件的的重绘(VC6.0 MFC)

    以前做过的几个控件的总结 列表框的演示请拖入文件 Ctrl/shift+鼠标 可多选, 自绘菜单 列表框的重用性还可以,继承CBoxItem 就可以实现一些功能,如每个项目的TOOPTIP提示 演示界面和QQ旋风有点像 其它的就不说了..

    Filebsssss.zip

    要创建一个支持文件读写的编辑框,我们需要完成以下步骤: 1. **创建MFC应用程序**: 首先,我们需要创建一个新的MFC应用程序项目。在Visual Studio中,选择“新建项目” -&gt; “MFC” -&gt; “MFC应用程序”,填写项目...

    win10+VS2017成功设置MSChart控件MSCHRT20.ocx

    附带的文件"放入文件和注册.png"可能展示了如何将MSCHRT20.ocx文件放置到正确位置并进行注册的截图,"3 MSChart使用截图 VS2017.png"可能是设置MSChart控件后的界面效果,"2 MFC界面显示加载成功.png"可能展示了MFC...

    文件拖拽(文件拖放)获取路径,打开文件,VC++

    摘要:VC/C++源码,界面编程,文件拖放,拖放打开文件 VC++实现文件拖拽(文件拖放),分四个步骤实现文件拖拽打开,拖放获取文件路径,打开实例窗口后,拖动任意一个文件到窗口中,可获该文件的路径信息,为下一步拖放...

    对话框控件拖拽改变大小,VC.NET源代码.rar

    在提供的压缩包文件“lx04”中,可能包含了实现上述功能的源代码文件,如`.cpp`和`.h`文件。通过查看和学习这些源代码,你可以了解具体的实现细节,包括如何处理消息,以及如何调整对话框的大小。请注意,由于缺少...

    逃跑按钮,实现代码

    Windows的消息机制是事件驱动的,当用户进行鼠标操作时,操作系统会生成相应的消息放入消息队列,然后由应用程序的主循环(通常在MFC中是CWinApp::Run函数)来取并分发这些消息。常见的鼠标消息有WM_MOUSEMOVE、WM_...

    各种拖拽实例

    首先,你需要定义一个数据源,然后在鼠标按下时启动拖放操作,同时在目标控件上处理DragEnter、DragOver和DragDrop事件,以接受和处理拖入的数据。 3. **C#拖拽实例** C#是.NET框架的主要编程语言,提供了丰富的...

    VC6使用技巧及问题收集.doc

    3. **ClassView视图管理**:在ClassView中可以通过右键新建文件夹,然后将相关的类拖入,以组织和整理类视图,使项目结构更加清晰。 4. **修复ClassView问题**:如果类视图中某些成员无法显示,尝试删除.ncb文件,...

    VC++ Studio使用技巧1.doc

    5. **整理ClassView视图**:在ClassView视图中,右键新建文件夹,然后将相关的类拖入,以保持视图整洁。 6. **预处理指令定位**:使用`Ctrl+K`可以快速在源文件中定位到对应的#if和#endif。 7. **添加系统库到项目...

Global site tag (gtag.js) - Google Analytics