于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使用拖放文件相关推荐

  1. win32下PE文件分析之节表

    接上一篇的win32下PE文件分析之NT头 (一).FileBuffer与ImageBuffer (1).FileBuffer是将文件原原本本的读入申请的内存区域中,那部分区域就是FileBuffer ...

  2. Winform中实现向窗体中拖放照片并显示以及拖放文件夹显示树形结构(附代码下载)

    场景 向窗体中拖拽照片并显示效果 向窗体中拖拽文件夹并显示树形结构效果 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 ...

  3. 【Virtual Box】使用增强功能在Ubuntu系统实现共享文件夹、共享复制粘贴、主机间拖放文件

    在上篇文章<[Virtual Box]Ubuntu系统全屏显示,使用增强功能 >后,增强功能已经是安装好了 1.共享文件夹 现在是设置共享文件夹,使得Windows系统和Ubuntu系统可 ...

  4. 解决系统下以管理员身份运行的程序接收不到拖放文件消息[WM_DROPFILES]问题的方法

    大多数程序都有接收拖放文件的功能,即是用鼠标把文件拖放到程序窗口上方,符合格式的文件就会自动被程序打开.最近自己对编写的程序增加了一个拖放文件的功能,在 Windows XP.Windows Serv ...

  5. 解决Win7系统下以管理员身份运行的程序接收不到拖放文件消息[WM_DROPFILES]问题的方法

    大多数程序都有接收拖放文件的功能,即是用鼠标把文件拖放到程序窗口上方,符合格式的文件就会自动被程序打开.最近自己对编写的程序增加了一个拖放文件的功能,在 Windows XP.Windows Serv ...

  6. C#读取Win32标准DLL文件中的字符串资源

    在C#中,通过Windows API函数读取标准的Win32 DLL文件中的字符串资源 下面的代码以读取 user32.dll 文件中的ID号为712的字符串资源. 如果代码运行正常的话,应该可以看到 ...

  7. Python PyCharm利用PyQt5使QPlainTextEdit支持拖放文件,类提升,重写QPlainTextEdit类

    一.利用PyCharm新建基于PyQt5对话框工程MyMainTest,添加QPlainTextEdit控件,保存主窗口MyQTMainForm.ui文件运行如下: 二.新建myqplaintexte ...

  8. win32开发(文件、字体和色彩)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 在操作系统上,文件选择.色彩选择.和字体选择这些功能一般都是操作系统提供的.记得以前在写mfc的 ...

  9. win32简单只读文件程序

    摘要 win32  主窗口  客户区 子窗口 背景 时间20200525 本人win类型的制作只有matlab的课设经验.web的C#和javaEE的课设经验.此win Application仅第一次 ...

  10. 个人笔记-拖放文件到批处理删除文件

    在使用Windows过程中,有时删除文件,经常提示文件被占用,无法删除.所以直接拖放,用批处理一键结束进程并删除. 源码: @echo off taskkill /f /t /IM "%~n ...

最新文章

  1. 合肥云暨移动应用孵化基地全面运营,服务企业转型升级
  2. C++类构造函数初始化列表
  3. hls.js播放hls直播源
  4. Redis是如何写代码注释的?
  5. redis主从复制部署策略+jedis设置主从
  6. (0.3)HarmonyOS鸿蒙开发工具DevEco Studio 模拟器使用
  7. Python自动识别多个不完整图像拼接为完整图像
  8. 防止linux系统文件被误删除,Linux系统防止误删除文件
  9. socket.io php 聊天室,WebSocket学习(一)——基于socket.io实现简单多人聊天室
  10. unity 如何获取到屏幕中间_请问如何获得场景的中心点在屏幕上的坐标?
  11. es6-let const
  12. 干货|手把手教你写单片机的结构体
  13. 内网穿透 (Natapp)
  14. Java写入文件换行
  15. leetcode刷题java之739. 每日温度
  16. 自然语言处理实战——对电影评论进行情感分析(英文)
  17. c语言此项目已过期是什么意思,Visual Studio 2017 许可证已过期解决方案
  18. 58同城MySQL30条军规
  19. java输入长和宽输出面积_用Java实现计算矩形的面积与周长
  20. 软件测试全网最全复习总结-别杠,杠就是你对

热门文章

  1. html 中的特殊字符转义,html拼接字符串中特殊字符(‘ “ 等的转义问题)
  2. 网络安全:个人网站防黑安全技巧
  3. python数字图像处理(13):基本形态学滤波
  4. Linux怎么登录redis数据库,Linux 系统上 Redis 数据库的 安装 部署 使用
  5. Zilliqa Scilla入门
  6. web3sdk 怎么配置连接区块链节点
  7. Kubernetes 小白学习笔记(17)--集群安全-APIServer的安全模型
  8. HyperLedger Composer 如何安装、小白入门教程
  9. 数据库学习----MySQL(二)
  10. 基于Java的外卖订餐平台