实现文件拖放的一种简洁方法

Python创建一个GUI(Tkinter)选择文件的界面获取文件路径 阅读详情
1、自已编写专用的类,程序复杂、维护麻烦;2、必须要将文件拖到对话框中的编辑控件上,拖动的文件名才被接受,而标准的WINDOWS程序只须将文件拖放到对话框即可被接受;3、只能接受一个拖放的文件。本文要介绍的这种方法只须调用一个WINDOWS API函数DragQueryFile即可实现文件的拖放操作,而且完全克服了上述3点不足。下面先介绍一下这个函数。

---- DragQueryFile原型为:

UINT DragQueryFile( HDROP    hDrop,                    UINT      iFile,                    LPTSTR   lpszFile,                    UINT      cch )

---- 其中hDrop是指向拖动文件结构的句柄;

---- iFile 是以0开始的被托动文件的序号,因为一次可能拖动多个文件。当此参数

---- 设为0xFFFFFFFF,则函数返回拖动文件的数量;

---- lpszFile 是指向文件名的缓冲区;

---- cch 是文件名缓冲区的大小,即文件名的字符数。

---- 明确了该函数的参数后,编程就是一件很简单的事情了。以下给出一个完整的实例,程序运行后弹出一个对话框,可以拖动任意数量的文件或目录到上面,松开鼠标后,程序先显示拖放文件的数量,然后将拖放的文件名全部显示在一个List Box控件中。具体步骤如下:

  1. 建立一个基于对话框的工程drop,然后其它选项全部用缺省值。
  2. 选中IDD_DROP_DIALOG对话框中Extended Styles的Accept files属性。
  3. 给IDD_DROP_DIALOG对话框添加一个List Box 控件IDC_LIST1。
  4. 在ClassWizard中给CdropDlg类添加成员变量m_list,类型为ClistBox。
  5. 给CdropDlg类中增加处理WINDOWS消息WM_DROPFILES的函数,接受系统给出的默认名字OnDropFiles,然后输入以下代码:
void CDropDlg::OnDropFiles(HDROP hDropInfo) {	char *lpszFileName=new char[512],cFileCount[10];	int nFileCount,i;	nFileCount=::DragQueryFile    (hDropInfo,0xFFFFFFFF,NULL,512);	::AfxMessageBox(itoa(nFileCount,cFileCount,10));	for (i=0;i

---- 注意程序中的::DragFinish (hDropInfo);语句是必不可少的,它用于释放WINDOWS为处理文件拖放而分配的内存。

---- 运行此程序可以看到,拖动的文件只要一进入对话框的边界,鼠标上立刻会现一个“+”,在对话框上的任意位置释放鼠标,拖放的文件都会被接受,完全解决了《用MFC实现文件拖放到编辑框》必须将文件拖到编辑框的不足;而且拖放是通过调用WINDOWS API函数实现的,因此程序非常健壮,几乎没有什么维护量。程序在INDOWS98、vc++5.0下通过。

用tkinter实线图片拖动 个人编写的小程序,实现拓片在GUI的拖动,十分盈动好用 立即下载

相关推荐

Python-PySimpleGUI一个建立在tkinter之上简单但功能强大的GUI

PySimpleGUI 一个建立在tkinter之上简单但功能强大的GUI

34-鼠标拖拽文件功能

直接拖动部分文件或者文件夹到tkinter窗口,实现快速添加文件功能。例1:活用lambda在处理方法传入多个函数.

***** 983

WSL2下用QEMU模拟ARM开发板:从编译uboot到调试全流程(附常见错误解决)

本文详细介绍了在WSL2环境下使用QEMU模拟ARM开发板的完整流程,包括uboot编译、内核调试等关键步骤。通过QEMU模拟vexpress-a9开发板,开发者可以高效搭建嵌入式开发环境,解决常见错误并提升开发效率。

solidity8miner的博客 286

C#中将某一文件拖向应用程序后打开或进行其它操作的实现

作者:PeterXu  来源:Blog.优快云  Blog: http://blog.youkuaiyun.com/peterreg/版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。本文地址:http://blog.youkuaiyun.com/peterreg/archive/2008/04/04/2248815.aspx在我们的日常应用中,经常可以将

PeterXu的专栏 1715

STM32版CCD线性摄像头寻线寻迹小车_stm32接ccd

目前大多数的小车寻线寻迹都是用红外对管寻线,这是比较简单也比较成熟的技术方案,且成本也低。本文将介绍使用CCD线性摄像头寻线寻迹。TSL1401 线性传感器由一个 1x128 的光电二极管阵列、相关的电荷放大电路以及一个内部像素数据保功能组成。内部像素数据保功能可以为所有像素点提供同时积分的开始和停止时间。该阵列由 128 个像素组成,每个像素的感光面积为 3,524.3 平方微米。像素之间的间隔为 8μm。内部控制逻辑简化了操作,该模块需要串行输入(SI)信号和时钟信号(CLK)。

2401_87557129的博客 3229

LabVIEW数据采集-数字I/O/计数器

labview 数据采集 数字I/O 计数器

weixin_43781045的博客 5619

tkinter拖拽读取文件

首先要下载windnd库 pip install windnd import tkinter as tk import windnd from tkinter.messagebox import showinfo def dragged_files(files): msg = '\n'.join((item.decode('gbk') for item in files)) showinfo("拖拽文件路径",msg) if __name__ == '__main__':

devil6636252的博客 5604

保姆级教程:SAP ABAPer如何为VF01销售发票和MIRO发票校验配置凭证替代(含AC_DOCUMENT BADI完整代码示例)

本文详细解析了SAP ABAP中通过AC_DOCUMENT BADI实现VF01销售发票和MIRO发票校验的凭证替代技术。从技术选型到BADI实施步骤,再到核心逻辑代码示例,为ABAP开发者提供了一套完整的解决方案,帮助应对财务部门复杂的业务需求。

weixin_30421809的博客 352

DRAG 实现文件拖放的一种简洁方法

实现文件拖放的一种简洁方法  本文要介绍的这种方法只须调用一个WINDOWS API函数DragQueryFile即可实现文件的拖放操作,而且完全克服了上述3点不足。下面先介绍一下这个函数。  ---- DragQueryFile原型为:  UINT DragQueryFile (HDROP hDrop, UINT iFile, LPTSTR lpszFile, UINTcch)

Sayesan的专栏 1185

SAP Business One自定义表与字段实战:从零构建企业专属数据模型

本文详细介绍了如何在SAP Business One中创建自定义表与字段,从零构建企业专属数据模型。通过实战案例和避坑指南,帮助用户掌握业务适配、流程优化和权限隔离等关键技巧,提升系统灵活性和数据管理效率。特别适合需要扩展标准功能的SAP Business One用户。

weixin_28730927的博客 362

论文翻译:arxiv-2023 Do-Not-Answer: A Dataset for Evaluating Safeguards in LLMs

随着大型语言模型(LLMs)的快速发展,出现了新的、难以预测的有害能力。这要求开发者能够通过评估“危险能力”来识别风险,以便负责任地部署LLMs。在这项工作中,我们收集了第一个开源数据集,用于评估LLMs中的安全保障,并以低成本部署更安全的开源LLMs。我们的数据集经过策划和筛选,只包含负责任的语言模型不应遵循的指令。我们注释并评估了六个流行的LLMs对这些指令的响应。基于我们的注释,我们继续训练了几个类似BERT的分类器,并发现这些小型分类器在自动安全评估上能够取得与GPT-4相当的成果。

CSPhD-winston的博客 1131

实现文件拖放的一种简洁方法 (转)

实现文件拖放的一种简洁方法 (转)[@more@]实现文件拖放的一种简洁方法 湖北省襄樊市电信局计算机中心 张洪征 ---- 读了南京海军指挥学院黄向明同志在贵报上发表的《用MFC实现文件拖放到编辑框》一文获益匪浅,同时...

ciya3282的博客 81

Windows2008使用-解决漏洞-CVE-2010-2730

随着硬件的升级,操作系统也逐渐进行了版本更新。目前阶段,Windows2016Server、Windows2022Server逐渐成为了以Windows系列的服务器平台系统。对于有些应用而言,由于其业务的固定,可能仍只能运行在Windows2008Server或者Windows2012Server上。有时候我们为安全需要,需要将相关的操作系统涉及的漏洞做修复。最近碰到在一个Windows2008R2 的操作系统漏洞CVE-2010-2730,一顿操作,终于找到了合适的方案,这里分享给大家。

mystonelxj的博客 2314

vc++中实现文件拖放功能

<br />实现文件拖放的一种简洁方法     <br />   本文要介绍的这种方法只须调用一个WINDOWS    API函数DragQueryFile即可实现文件的拖放操作,而且完全克服了上述3点不足。下面先介绍一下这个函数。     <br />   ----    DragQueryFile原型为:     <br />    <br />   UINT    DragQueryFile    (HDROP    hDrop,    UINT    iFile,    LPTSTR    lpsz

scollins的专栏 1629

人工智能技术基础系列之:迁移学习

作者:禅与计算机程序设计艺术 1.背景介绍 随着深度学习和神经网络的快速发展,越来越多的应用场景需要处理大量的数据和复杂的任务。然而,由于计算资源、存储空间等条件的限制,传统的人工智能方法往往不能满足实际需求。因此,为了提高效率和降低成本,研究人员提出了迁移学习的概念。本篇文章将详细介绍迁移学习的基

AI天才研究院 699

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: C++大师Lippman:我对中国程序员的忠告
下一篇: 再谈用MFC实现文件拖放到编辑框
普通网友
博客等级 码龄22年 1万+粉丝 3156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值