翻译《The Old New Thing》- What a drag: Dragging a Uniform Resource Locator (URL)

What a drag: Dragging a Uniform Resource Locator (URL) - The Old New Thing (microsoft.com)icon-default.png?t=N7T8https://devblogs.microsoft.com/oldnewthing/20080312-00/?p=23133

Raymond Chen 2008年03月12日


麻烦的拖拽:拖拽统一资源定位符(URL)

简要

本文介绍了如何在Windows程序中实现拖拽操作,以便同时支持在Internet Explorer和Firefox浏览器中识别URL。通过修改数据对象的剪贴板格式,从`CF_TEXT`更改为`CFSTR_SHELLURL`,使得IE能够识别拖拽的文本为URL。作者承诺将在下一篇文章中展示如何创建一个单一的数据对象,使其能够兼容两个浏览器。

正文

        上一次,我们拖拽了一些文本,并发现如果你将其拖放到 Firefox 上,文本会被解释为 URL,但 Internet Explorer 则不那么愿意接受它。今天,我们将使数据对象适用于 Internet Explorer。

        唯一的变化是我们必须以 CFSTR_SHELLURL 剪贴板格式的形式提供 URL,而不是以 CF_TEXT 的形式。拿上次的程序并进行两个更改。首先,使用方便的搜索替换功能将 DATA_TEXT 改为 DATA_URL(这个步骤技术上不是必需的,但让名称与其用途相匹配是很好的)。真正的工作发生在构造函数的这个更改中:

CTinyDataObject::CTinyDataObject() : m_cRef(1)
{
  SetFORMATETC(&m_rgfe[DATA_URL],
               RegisterClipboardFormat(CFSTR_SHELLURL));
}

        就是这样;只需将剪贴板格式从 CF_TEXT 更改为 CFSTR_SHELLURL。需要注意的是,CFSTR_SHELLURL 表示一个 ANSI 字符串。由于“URL 只使用 US-ASCII 编码字符集的图形可打印字符编写”,因此限制为 ANSI 并不会损失表达能力。

        运行这个新程序,现在你可以在客户端区域点击并拖放(不可见的)对象到 Internet Explorer,它将导航到微软的主页。(如果你的系统支持活动桌面,你也可以将不可见的对象拖放到桌面上,并创建一个活动桌面组件。)

        好的,我们有一个版本的程序可以将 URL 拖到 Internet Explorer,另一个版本可以将 URL 拖到 Firefox。下次,我们将它们结合起来,拥有一个单一的数据对象,可以同时拖放到两者。这非常简单(因为我就是这样计划的)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HALCON-从入门到入门-图像格式的互相转换

1.废话 上次说到了图片的读取和写入到本地,这次说一下图片的格式相关。 位图和矢量图 photoshop处理出来的图片肯定叫做图片,那么coreDraw处理出来的图片是不是也叫图片。 之间就有区分,一种叫做位图,一种叫做矢量图 位图和矢…

STM32作业实现(四)光敏传感器

目录 STM32作业设计 STM32作业实现(一)串口通信 STM32作业实现(二)串口控制led STM32作业实现(三)串口控制有源蜂鸣器 STM32作业实现(四)光敏传感器 STM32作业实现(五)温湿度传感器dht11 STM32作业实现(六)闪存保存数据 STM32作业实现(七)OLED显示数据 STM32作业实现(八)触摸按…

曝光超1.5亿,迪丽热巴“抖音直播首秀”解锁德施曼智能锁科技革命

作为中国电商行业年中最大的消费狂欢节点,今年的618大促热闹依旧;各大品牌在今年极简的现货模式下展开了周期最长的品牌实力比拼。其中,高端智能锁领军品牌德施曼在618大促期间,携手代言人迪丽热巴,再次掀起智能锁消费…

【前端】Vuex笔记(超详细!!)

最近花了两周时间,完完全全的跟着Vuex官方的视频学完了Vuex并且详详细细的做了笔记,其中总结部分是我对于整个视频课程的总结,视频部分是跟着视频做的笔记,如果总结部分有不懂的话,直接去视频部分查找对应的笔记即可&a…

Codeforces Round 548 (Div. 2) C. Edgy Trees

Edgy Trees time limit per test: 2 second memory limit per test: 256 megabytes input: standard input output: standard output You are given a tree (a connected undirected graph without cycles) of n n n vertices. Each of the n − 1 n - 1 n−1 edges of the t…

计算机毕业设计 | SpringBoot招投标系统 任务发布网站(附源码)

1,绪论 在市场范围内,任务发布网站很受欢迎,有很多开发者以及其他领域的牛人,更倾向于选择工作时间、工作场景更自由的零工市场寻求零散单子来补贴家用。 如今市场上,任务发布网站鱼龙混杂,用户需要找一个…

【TCP协议中104解析】wireshark抓取流量包工具,群殴协议解析基础

Tcp ,104 ,wireshark工具进行解析 IEC104 是用于监控和诊断工业控制网络的一种标准,而 Wireshark则是一款常用的网络协议分析工具,可以用干解析TEC104 报文。本文将介绍如何使用 Wireshark解析 IEC104报文,以及解析过 程中的注意事项。 一、安…

STL-queue的使用及其模拟实现

在C标准库中,队列(queue)是一种容器适配器,它以先进先出的方式组织数据,其中从容器一端插入元素,另一端取出元素。 queue的使用 queue的构造函数 queue的成员函数 empty:检测队列是否为空size:返回队列中有…

7-14 字节序(Endianness)---PTA实验C++

一、题目描述 “内存寻址的最小单位是字节”——明白。 “每个字节有唯一的编号,称为地址”——明白。 “C中int通常为四个字节”——了解。 “int x 1;最低字节是1还是0?——纳尼? 事实上,这里有点小小分歧: 多字…

C++对C的增强

1、作用域运算符 ::解决归属问题(谁是谁的谁) 可以优先使用全局变量 2、命名空间 使用关键字namespace,控制标名称的作用域。 命名空间的本质:对符号常量、变量、函数、结构、枚举、类和对象等等进行封装 1、创建一个命名空间…

学习小记录——python函数的定义和调用

今日小好运,未来有好运。🎁💖🫔 分享个人学习的小小心意,一起来看看吧 函数的定义 函数通常来说就是带名字的代码块,用于完成具体的工作,需要使用的时候调用即可,这不仅提高代码的…

我的创作纪念日-砥砺前行

机缘 大家好,我是诊断协议那些事儿,又和大家见面了,记录一下创作日记,转眼间已经在CSDN平台创作三年了,最初仅仅是为了记录学习过程中的笔记,后来慢慢转为项目实践中的经验分享,当然更多的希望…

dm8 什么时候视图中统计的内存会超过OS

v$bufferpool和v$mem_pool视图记录着DMSERVER各组件的内存占用量。理论上跟OS看到的保持一致。但实际大多数场景下,OS中看到的数据远大于视图中的统计。这里面可能有内存泄漏的原因。不过也有的时候视图中的统计数据超过OS。下面就是这种情况: 上图中红线…

nas连接萤石云摄像机CTQ6X

需要准备的nassurveillance 请参考这个大佬的流程 https://www.bilibili.com/video/BV1ri4y1g7EN/ 踩坑: 一直到添加录像机验证一直没问题,但是验证一直不通过,后面下载了萤石云工作室的win桌面客户端,不知道是不是设置了预览还…

【Ubuntu】【Shell】执行sh脚本报错“xxx.sh:/bin/bash^M:解释器错误: 没有那个文件或目录“

背景 在自己Ubuntu环境执行sh脚本,报错"xxx.sh:/bin/bash^M:解释器错误: 没有那个文件或目录",查了下是Ubuntu系统默认的shell是dash: 修改配置过下,变成bash 解决方案 在终端执行: sudo dp…

云队友:专业的远程工作和程序员接单平台,用户体验佳

编程赚钱的平台有不少,良莠不齐,今天给大家分享个专业的远程工作平台,以技术类工作为主(包括编程): 云队友简介 外包大师是PMCAFF互联网产品社区于2016年推出的互联网产品技术外包服务平台。外包大师最新…

MyBatis 核心配置文件详细内容详解

1. MyBatis 核心配置文件详细内容详解 文章目录 1. MyBatis 核心配置文件详细内容详解2. 测试和学习的准备工作3. environment 标签4. transactionManager 标签5. dataSource 标签6. properties 标签7. mapper 标签8. 总结:9. 最后: 关于 MyBatis 这个核…

攻防世界---misc---2017_Dating_in_Singapore

1、题目描述 2、下载附件是一个pdf,里面是一个日历 3、题目描述是一些数字,直觉猜测是和日历的日期有关,仔细看题目的描述,会发现有个-连接,拆开之后发现一共有12组数据,再连联系到十二个月份,再…

音视频开发—FFmpeg播放YUV文件,YUV转换为JPEG操作

文章目录 1.使用命令行播放YUV数据1.1命令解析1.2参数说明 2.使用C语言实现将YUV数据转为JPEG图片格式2.1需求分析2.2读取YUV源文件2.3将YUV数据封装为AVFrame2.4将NV12 转换为YUV420平面格式2.5初始化MJPEG编码器2.6将YUV420P编码为JPEG2.7将编码数据写入图片文件2.8完整代码 …

从零开始实现自己的串口调试助手(4) -实现自动发送 / 时间显示

实现自动发送:checkBox 添加bool槽函数 bool 值&#xff0c;当√的时候为true 取消√ 位false 实现带bool 类型的槽函数: void Widget::on_checkBox_SendInTime_clicked(bool checked) {qDebug()<<"checkStatus:"<<checked;if(checked){ // 被勾选了//…