window拖拽操作的实现

  1. 调用DragAcceptFiles,让控件或者窗体支持文件拖动操作
void DragAcceptFiles(HWND hWnd,      //指明目标窗体的句柄BOOL fAccept    //为True时 则hWnd所指向的窗体可以接受拖放的文件. 
);
  1. 窗口消息过程处理WM_DROPFILES消息。

在WM_DROPFILES消息处理过程中,wParam参数的值为HDROP,通过调用DragQueryFile获得拖拽的文件个数和文件名,对文件进行相应的操作处理后,调用DragFinish函数释放缓冲区,完成拖拽操作。

UINT DragQueryFile(HOROD hDrop,UINT iFile,LPTSTR lpszFile,UINT cch,
);

返回值:

非零值表示调用成功。

当函数将文件名复制到缓冲区时,返回值是复制的字符计数,不包括终止 null 字符。

如果索引值为0xFFFFFFFF,则返回值是已拖放文件的计数。 请注意,索引变量本身返回不变,因此保持0xFFFFFFFF。

如果索引值介于零和已拖放文件总数之间,并且 lpszFile 缓冲区地址为 NULL,则返回值是缓冲区所需的大小(以字符为单位), 不包括 终止 null 字符。

参数说明:
hDrop是一个文件名缓冲区句柄。
iFile指明查询文件序号。取值0xFFFFFFFF时,函数返回值为所拖放文件数目;其他取值(0~文件拖放总数),获取对应序号的文件名的缓冲区地址。
lpszFile取值为NULL时,函数返回对应文件名的长度。

DragFinish函数声明拖放操作结束,释放文件名缓冲区。

void DragFinish(HDROP hDrop)

例子:

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{switch (uMsg){case WM_CREATE:DragAcceptFiles(hWnd, TRUE);//接受拖放事件设置break;case WM_DROPFILES:{HDROP hdrop = (HDROP)wParam;char sDropFilePath[MAX_PATH+1];int iDropFileNums = 0;iDropFileNums = DragQueryFile(hdrop, 0xFFFFFFFF, NULL, 0);//获取拖放文件个数for (int i=0; i<iDropFileNums; i++)//分别获取拖放文件名(针对多个文件操作){    DragQueryFile(hdrop, i, sDropFilePath, sizeof(sDropFilePath));    }//DragQueryFile(hdrop, 0, sDropFilePath, MAX_PATH);//分别获取拖放文件名(针对单个文件操作)    DragFinish(hdrop);//释放文件名缓冲区    }break;default:break;    }
}

参考地址:http://kaifa.yiyuen.com/kaifa/article/57e5812eb98d3c3339d5fa7d7c99f5b8

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/152025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【面试经典150 | 数学】回文数

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;反转一半数字 其他语言python3 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本…

StoneDB顺利通过中科院软件所 2023 开源之夏 结项审核

近日&#xff0c;中科院软件所-开源软件供应链点亮计划-开源之夏2023的结项名单正式出炉&#xff0c;经过三个月的项目开发和一个多月的严格审核&#xff0c;共产生 418个成功结项项目&#xff01;其中&#xff0c;StoneDB 作为本次参与开源社区&#xff0c;社区入选的两个项目…

EXPLAIN命令使用及功能介绍

当你不确定某个select语句执行会不会影响数据库cpu怎么办&#xff1f;&#xff0c;使用EXPLAIN命令&#xff0c;给你分析该不该执行&#xff01;&#xff01; EXPLAIN命令介绍 MySQL的EXPLAIN命令是一个查询优化工具&#xff0c;用于分析和评估SELECT语句的执行计划。它提供了…

制作含有音频、视频的网页

参考代码如下 <!DOCTYPE html> <html> <head><title>视频音乐网页</title> </head> <body><!-- 视频 --><video width"320" height"240" controls><source src"movie.mp4" type"…

python——第十一天

今日目标&#xff1a; 模块和包的基本概念 python中模块的导入问题 main函数的作用和使用 常见内置模块的使用 IO流相关 模块和包的基本概念&#xff1a; 模块&#xff08;module&#xff09;&#xff1a;一个.py文件就是一个模块 包&#xff08;package&#xff09;&#xff1…

单片非晶磁性测量系统磁参量指标

1. 概述 单片非晶磁性测量系统是专用于测量非晶或纳米晶薄片(带)交流磁特性的装置&#xff0c;由精密励磁及测量装置 ( 40 Hz&#xff5e;65 Hz&#xff0c;可定制至400 Hz )、单片磁导计、全自动测量软件组成。使用该装置可在能耗、效率、材料均匀性/一致性、可靠性、整个生命…

CSS的选择器(一篇文章齐全)

目录 Day26&#xff1a;CSS的选择器 1、CSS的引入方式 2、CSS的选择器 2.1 基本选择器​编辑 2.2 组合选择器 2.3 属性选择器 2.4 伪类选择器 2.5 样式继承 2.6 选择器优先级 3、CSS的属性操作 3.1 文本属性 3.2 背景属性 3.3 边框属性 3.4 列表属性 3.5 dispal…

mysql面试题——索引相关

一&#xff1a;什么是索引? 索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”。 二&#xff1a;为什么使用索引&#xff1f; 能以更少的查询次数来找到数据 三&#xff1a;InnoDB中的索引类型&#xff1f; InnoDB存储引擎支持两种常见的索引数据结构&#…

【10套模拟】【7】

关键字&#xff1a; 二叉排序树插入一定是叶子、单链表简单选择排序、子串匹配、层次遍历

力扣刷题-二叉树-二叉树的高度与深度

二叉树最大深度 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3 递归法 本题可以使用前序&#xff08;中左…

Sql Server 2017主从配置之:事务日志传送

使用事务日志传送模式搭建Sql Server 2017主从同步&#xff0c;该模式有一定的延迟&#xff0c;是通过3个不同的定时任务&#xff0c;将主库的日志同步到从库进行恢复来实现数据库同步操作。 该模式在同步时候&#xff0c;从库不可以被使用&#xff0c;否则同步就会失败。 环…

现货白银MACD实战分析例子

MACD这个技术指标的全称是平滑异同移动平均线&#xff0c;主要表示经过平滑处理后均线的差异程度&#xff0c;一般用来研判现货白银价格变化的方向、强度和趋势。MT4中的MACD指标&#xff0c;主要是由信号线、&#xff08;上升/下跌&#xff09;动能柱、0轴这三部分组成。 MACD…

【开源】基于Vue.js的衣物搭配系统的设计和实现

项目编号&#xff1a; S 016 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S016&#xff0c;文末获取源码。} 项目编号&#xff1a;S016&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 衣物档案模块2.2 衣物搭配模块2.3 衣…

MyBatis查询数据库(全是精髓)

1. 什么是MyBatis&#xff1f; 简单说&#xff0c;MyBatis就是一个完成程序与数据库交互的工具&#xff0c;也就是更简单的操作和读取数据库的工具。 2. 怎么学习Mybatis Mybatis学习只分为两部分&#xff1a; 配置MyBatis开发环境使用MyBatis模式和语法操作数据库 3. 第一…

彻底解决electron-builder安装问题与npm下载配置问题

electron-builder这个工具每次安装最少要耗费我整整一天的时间。由于只需安装一次即可使用就没去做好笔记,但有时候涉及到更新,或者换了新电脑,这个环境还得重新安装。为了避免下次安装浪费一整天时间,特此做好笔记。 虽然网上找了很多资料但都不详细,现在我们从底层来理解…

Python文本段落翻译

Python文本段落翻译 1、Translate库2、基本使用 1、Translate库 translate非标准库是Python中可以实现对多种语言进行互相翻译的库&#xff0c;translate可以将原始文本或段落翻译成我们需要的目标语言 translate支持多种语言&#xff0c;常见的例如&#xff1a; zh/zh-CN&…

pg 模拟主库down机之pg_kaboom

为了测试pg模拟down机&#xff0c;可使用插件pg_kaboom:GitHub - pgguru/pg_kaboom: Devious SQL-based SQL tools to crash your PostgreSQL server $ git clone gitgithub.com:CrunchyData/pg_kaboom.git $ cd pg_kaboom $ make PG_CONFIGpath/to/pg_config && make…

2023年(第六届)电力机器人应用与创新发展论坛-核心PPT资料下载

一、峰会简介 大会以“聚焦电力机器人创新、助力行业数字化转型、促进产业链协同发展”为主题&#xff0c;展示电力机器人产业全景创新技术&#xff0c;探讨数字化战略下电力机器人应用前景和发展趋势。为加快推进电力机器人应用拓新&#xff0c;助力电网数字化转型升级&#…

Go 语言常用数据结构

1. 请解释 Go 语言中的 map 数据结构&#xff0c;以及它与数组和切片的区别。 ①、解释说明&#xff1a; 在Go语言中&#xff0c;map是一种内置的数据类型&#xff0c;它是一种无序的键值对集合。每个键值对都由一个键和一个值组成&#xff0c;它们之间用冒号分隔。键可以是任…

彻底弄清Python软件包安装流程并解决安装错误

彻底弄清Python软件包安装流程并解决安装错误 前言&#xff1a;写这篇文章的初衷也是因为以前饱受Python环境配置和软件包安装的摧残&#xff0c;所以写下这篇文章希望帮助同样深陷泥潭的小伙伴们&#xff0c;该文会带你理解关于安装软件包的流程。&#xff08;tips&#xff1…