win32使用拖放文件
于win32规划,使用拖放文件操作,非经常见(不否认有些人喜欢用button打开)
中使用拖拽,非常easy,仅仅须要在创建窗体的时候使用WS_EX_ACCEPTFILES标识符,然后使用一个消息函数去处理(当然,这是属于窗体的扩展风格。所以须要使用CreateWindowEx来创建):
hWnd = CreateWindowEx(WS_EX_ACCEPTFILES, szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
这样我们就能够响应相应的消息类型:
case WM_DROPFILES:OnDropFiles(hWnd, (HDROP)wParam);break;
响应函数,事实上挺简单的:
VOID OnDropFiles(HWND hwnd, HDROP hDropInfo)
{UINT nFileCount = ::DragQueryFile(hDropInfo, (UINT)-1, NULL, 0);TCHAR szFileName[_MAX_PATH] = _T("");DWORD dwAttribute;// 获取拖拽进来文件和目录for (UINT i = 0; i < nFileCount; i++){::DragQueryFile(hDropInfo, i, szFileName, sizeof(szFileName));dwAttribute = ::GetFileAttributes(szFileName);// 是否为目录if (dwAttribute & FILE_ATTRIBUTE_DIRECTORY){ ::SetCurrentDirectory(szFileName); EnumerateFiles();}else{// 文件能够直接进行播放cout << szFileName << endl;MessageBox(0, szFileName, "", MB_OK);}}::DragFinish(hDropInfo);
}
EnumerateFiles()是枚举目录中子文件的函数:
VOID EnumerateFiles()
{WIN32_FIND_DATA fd;HANDLE hFind = ::FindFirstFile(_T("*.*"), &fd);if (hFind != INVALID_HANDLE_VALUE){do {// 假设为文件夹if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){if (_tcscmp(fd.cFileName, _T(".")) && _tcscmp(fd.cFileName, _T(".."))){::SetCurrentDirectory(fd.cFileName); EnumerateFiles();::SetCurrentDirectory(_T("..")); }}// 假设为文件else{string strDir;TCHAR lpDir[MAX_PATH];::GetCurrentDirectory(MAX_PATH, lpDir);strDir = lpDir;
// if ( strDir.Right(1) != _T("\\") )
// {
// strDir += _T("\\");
// }strDir += fd.cFileName;MessageBox(0, strDir.c_str(), "", MB_OK);}} while (::FindNextFile(hFind, &fd));::FindClose(hFind);}
}
就这么简单,就能实现所要的效果了
相应的使用样例下载传送门:
http://download.csdn.net/detail/zengraoli/7864689
版权声明:本文博主原创文章。博客,未经同意不得转载。
转载于:https://www.cnblogs.com/blfshiye/p/4776167.html
win32使用拖放文件相关推荐
- win32下PE文件分析之节表
接上一篇的win32下PE文件分析之NT头 (一).FileBuffer与ImageBuffer (1).FileBuffer是将文件原原本本的读入申请的内存区域中,那部分区域就是FileBuffer ...
- Winform中实现向窗体中拖放照片并显示以及拖放文件夹显示树形结构(附代码下载)
场景 向窗体中拖拽照片并显示效果 向窗体中拖拽文件夹并显示树形结构效果 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 ...
- 【Virtual Box】使用增强功能在Ubuntu系统实现共享文件夹、共享复制粘贴、主机间拖放文件
在上篇文章<[Virtual Box]Ubuntu系统全屏显示,使用增强功能 >后,增强功能已经是安装好了 1.共享文件夹 现在是设置共享文件夹,使得Windows系统和Ubuntu系统可 ...
- 解决系统下以管理员身份运行的程序接收不到拖放文件消息[WM_DROPFILES]问题的方法
大多数程序都有接收拖放文件的功能,即是用鼠标把文件拖放到程序窗口上方,符合格式的文件就会自动被程序打开.最近自己对编写的程序增加了一个拖放文件的功能,在 Windows XP.Windows Serv ...
- 解决Win7系统下以管理员身份运行的程序接收不到拖放文件消息[WM_DROPFILES]问题的方法
大多数程序都有接收拖放文件的功能,即是用鼠标把文件拖放到程序窗口上方,符合格式的文件就会自动被程序打开.最近自己对编写的程序增加了一个拖放文件的功能,在 Windows XP.Windows Serv ...
- C#读取Win32标准DLL文件中的字符串资源
在C#中,通过Windows API函数读取标准的Win32 DLL文件中的字符串资源 下面的代码以读取 user32.dll 文件中的ID号为712的字符串资源. 如果代码运行正常的话,应该可以看到 ...
- Python PyCharm利用PyQt5使QPlainTextEdit支持拖放文件,类提升,重写QPlainTextEdit类
一.利用PyCharm新建基于PyQt5对话框工程MyMainTest,添加QPlainTextEdit控件,保存主窗口MyQTMainForm.ui文件运行如下: 二.新建myqplaintexte ...
- win32开发(文件、字体和色彩)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 在操作系统上,文件选择.色彩选择.和字体选择这些功能一般都是操作系统提供的.记得以前在写mfc的 ...
- win32简单只读文件程序
摘要 win32 主窗口 客户区 子窗口 背景 时间20200525 本人win类型的制作只有matlab的课设经验.web的C#和javaEE的课设经验.此win Application仅第一次 ...
- 个人笔记-拖放文件到批处理删除文件
在使用Windows过程中,有时删除文件,经常提示文件被占用,无法删除.所以直接拖放,用批处理一键结束进程并删除. 源码: @echo off taskkill /f /t /IM "%~n ...
最新文章
- 合肥云暨移动应用孵化基地全面运营,服务企业转型升级
- C++类构造函数初始化列表
- hls.js播放hls直播源
- Redis是如何写代码注释的?
- redis主从复制部署策略+jedis设置主从
- (0.3)HarmonyOS鸿蒙开发工具DevEco Studio 模拟器使用
- Python自动识别多个不完整图像拼接为完整图像
- 防止linux系统文件被误删除,Linux系统防止误删除文件
- socket.io php 聊天室,WebSocket学习(一)——基于socket.io实现简单多人聊天室
- unity 如何获取到屏幕中间_请问如何获得场景的中心点在屏幕上的坐标?
- es6-let const
- 干货|手把手教你写单片机的结构体
- 内网穿透 (Natapp)
- Java写入文件换行
- leetcode刷题java之739. 每日温度
- 自然语言处理实战——对电影评论进行情感分析(英文)
- c语言此项目已过期是什么意思,Visual Studio 2017 许可证已过期解决方案
- 58同城MySQL30条军规
- java输入长和宽输出面积_用Java实现计算矩形的面积与周长
- 软件测试全网最全复习总结-别杠,杠就是你对
热门文章
- html 中的特殊字符转义,html拼接字符串中特殊字符(‘ “ 等的转义问题)
- 网络安全:个人网站防黑安全技巧
- python数字图像处理(13):基本形态学滤波
- Linux怎么登录redis数据库,Linux 系统上 Redis 数据库的 安装 部署 使用
- Zilliqa Scilla入门
- web3sdk 怎么配置连接区块链节点
- Kubernetes 小白学习笔记(17)--集群安全-APIServer的安全模型
- HyperLedger Composer 如何安装、小白入门教程
- 数据库学习----MySQL(二)
- 基于Java的外卖订餐平台