首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何计算SHDoDragDrop使用的shell拖放图标的大小?

基础概念

SHDoDragDrop 是 Windows API 中的一个函数,用于实现 shell 拖放操作。这个函数允许应用程序将数据对象拖放到另一个窗口或应用程序中。在拖放过程中,通常会显示一个图标来表示被拖动的数据。

相关优势

  1. 跨应用程序兼容性:使用 SHDoDragDrop 可以实现不同应用程序之间的数据拖放。
  2. 丰富的用户体验:拖放操作提供了直观且高效的用户交互方式。
  3. 灵活性:可以自定义拖放图标和数据对象,以适应不同的应用场景。

类型

SHDoDragDrop 主要涉及以下几种类型的数据对象:

  • 文件
  • 文件夹
  • 文本
  • 图像
  • 自定义数据对象

应用场景

  • 文件管理器:允许用户通过拖放操作移动或复制文件和文件夹。
  • 文本编辑器:支持文本的拖放复制和粘贴。
  • 图像处理软件:允许用户拖放图像文件进行编辑或组织。

计算拖放图标大小

要计算 SHDoDragDrop 使用的 shell 拖放图标的大小,通常需要考虑以下因素:

  1. 系统默认图标大小:Windows 系统对不同类型的图标有默认的大小设置。
  2. 自定义图标大小:应用程序可以自定义拖放图标的大小。

计算方法

  1. 获取系统默认图标大小
  2. 可以通过读取注册表或使用系统 API 获取 Windows 默认图标大小。例如,Windows 10 默认图标大小通常是 32x32 像素。
  3. 自定义图标大小
  4. 如果应用程序需要自定义图标大小,可以在创建拖放操作时指定图标大小。例如,使用 IDropSourceIDataObject 接口时,可以设置图标的大小。

示例代码

以下是一个简单的示例代码,展示如何在 C++ 中使用 SHDoDragDrop 并自定义图标大小:

代码语言:txt
复制
#include <windows.h>
#include <shlobj.h>

// 创建拖放数据对象
IDataObject* pDataObject = ...; // 初始化数据对象

// 创建拖放源
IDropSource* pDropSource = ...; // 初始化拖放源

// 设置自定义图标大小
int iconSize = 64; // 自定义图标大小为 64x64 像素

// 执行拖放操作
DWORD dwEffect;
HRESULT hr = SHDoDragDrop(pDataObject, pDropSource, DROPEFFECT_COPY | DROPEFFECT_MOVE, &dwEffect);

// 处理拖放结果
if (SUCCEEDED(hr)) {
    // 拖放成功
} else {
    // 拖放失败
}

// 释放资源
pDataObject->Release();
pDropSource->Release();

参考链接

通过以上方法,可以计算并设置 SHDoDragDrop 使用的 shell 拖放图标的大小,从而提供更好的用户体验。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Qt官方示例-拖动图标

拖动图标示例显示了如何在同一应用程序中的小部件之间以及不同应用程序之间拖放图像数据。   在使用拖放的许多情况下,用户开始从特定的窗口小部件拖放,并将有效负载拖放到另一个窗口小部件上。...DragWidget类定义   用于显示图标的图标小部件是QLabel的子类: class DragWidget : public QFrame { public: explicit DragWidget...QIODevice::WriteOnly); dataStream pos() - child->pos());   由于我们将发送图标的像素图数据以及图标小部件中有关用户单击的信息...为了实现互操作性,拖放操作使用MIME类型描述它们包含的数据。...(pixmap); drag->setHotSpot(event->pos() - child->pos());   在这里,我们将数据传递到拖动对象,设置在操作期间将在光标旁边显示的像素图,并定义将像素图的位置置于光标下方的热点位置

1.7K31

【前端拖拽组件库】最强开源高性能组件库Pragmatic-drag-and-drop简介与分析

Atlassian 在研发这个前端组件库的时候,是奔着实用主义去的,一般我们理解使用实用都会好想到:体积小,性能高,好用,使用,简单易用等关键字,没错,Pragmatic-drag-and-drop就是一个非常关注性能的拖放库...Pragmatic-drag-and-drop已经完成了很多用户设计指南,其中体现了我们希望如何在产品中实现拖放,其中一些决策体现在一些可选包中。当然,也运行可以自由使用喜欢的任何设计语言。...: 处理文本选择的拖动外部适配器:处理从当前窗口外部发起的拖动操作(例如来自其他或应用程序的window文件和文本)适配器至少需要提供以下两部分:创建放置目标的方法(例如dropTargetForElements...四、实操教程下面我们将根据官网的一个实例,学习使用 Pragmatic-drag-and-drop实现一些基本功能,包括可拖放、拖放目标和监视器,我们将创建一个带有可拖动棋子的棋盘,效果图如下:1.构建可拖动棋子我们第一步是允许棋子被拖动...'lightgrey' : 'white';}3.移动棋子最后实现棋子在掉落时移动方块,我们将使用monitorForElements实用的拖放功能。监视器允许从代码库中的任何位置观察拖放交互。

3.7K22
  • DoubleTake mac(全景图制作软件)激活版

    DoubleTake mac版是Macos上一款全景图制作软件,DoubleTake for mac可以直接将图片拖拽到视图中进行编辑,图片重叠部分会自动的融合最后,合并成为一张全景图像。...图片DoubleTake功能介绍可以立即将图像拼接在一起将照片导入DoubleTake简化为简单地将它们拖放到应用程序主窗口的顶部,或者放在Dock图标的顶部。...通过附加控制面板,您可以旋转或倾斜图像,更改方向或调整图像大小。此外,您还可以调整照片曝光,对比度,饱和度,伽玛或亮度等级。DoubleTake还可以帮助您对齐图像,并确保创建平滑过渡。...从多个图像创建全景图如果您使用DoubleTake将多个图像拼接在一起,DoubleTake允许您将扭曲应用于最终结果,这样,过渡区域的直线将不太明显。一个简单的滑动条允许您调整失真的焦距。...可使用Mac快速生成全景图总而言之,即使DoubleTake采用简约设计并且没有配备非常复杂的工具,它仍然可以成功处理相当苛刻的任务,您可以毫不费力地将图像拼接在一起并创建全景图,也可以创建照片拼贴,或者您可以将大型照片拆分为较小的图像文件

    36930

    Python Qt GUI设计:UI界面可视化组件、属性概述(基础篇—3)

    sizeIncrement属性 sizeIncrement属性表示组件调整大小时的每次变化的增量大小(单位:像素)的基数,实际调整大小计算公式如下: width = baseSize().width(...baseSize属性 baseSize属性是组件的基础大小(单位:像素),如果组件设定了sizeIncrement,该属性用于在调整组件尺寸时计算组件应该调整到的合适值,这个属性缺省值是(0,0)。...如果部件接受拖放,则在鼠标拖放时,拖放事件会发送给鼠标当前光标下接受拖放的第一个部件。 如果组件设置了acceptDrops属性为True,则就是通知系统该组件可接受鼠标拖放事件。...对于大多数小部件,无需设置此属性,因为Qt会调用部件相关属性显示,如按钮将显示按钮的文本,但当小部件不提供任何文本时,设置此属性很重要。例如,只包含图标的按钮需要将此属性设置为与屏幕阅读器一起使用。...inputMethodHints属性 inputMethodHints属性只对输入组件有效,输入法使用它来检索有关输入法应如何操作的提示,例如,如果设置了只允许输入数字的标志,则输入法可能会更改其可视组件

    5.8K50

    DoubleTake for Mac(全景图制作软件) v2.6.10注册激活版

    比起特别复杂的软件,小编建议您使用这款DoubleTake Mac版。操作很简单,小巧便捷,是非常好用的全景图拼接制作软件。...图片DoubleTake for Mac(全景图制作软件)DoubleTake for Mac软件功能亮点1 可以立即将图像拼接在一起将照片导入DoubleTake简化为简单地将它们拖放到应用程序主窗口的顶部...,或者放在Dock图标的顶部。...2 从多个图像创建全景图如果您使用DoubleTake将多个图像拼接在一起,DoubleTake允许您将扭曲应用于最终结果,这样,过渡区域的直线将不太明显。一个简单的滑动条允许您调整失真的焦距。...3 可使用Mac快速生成全景图总而言之,即使DoubleTake采用简约设计并且没有配备非常复杂的工具,它仍然可以成功处理相当苛刻的任务,您可以毫不费力地将图像拼接在一起并创建全景图,也可以创建照片拼贴

    45310

    【愚公系列】2023年11月 Winform控件专题 Label控件详解

    DragDrop: 当在控件区域内释放拖拽物体时触发,可以在这个事件中处理拖放操作。下面是一个将一个文件拖放到一个TextBox中显示文件路径:将TextBox的AllowDrop属性设置为true。...展示如何在Label控件中使用AutoEllipsis属性:label1.Text = "这是一段很长很长的文本,它将会超出Label控件的显示区域,使用AutoEllipsis可以自动添加省略号。"...contextMenuStrip1.Visible) { MessageBox.Show("菜单已关闭"); }}1.9 Cursor可以使用Cursor类来控制鼠标光标的外观...Clip:获取或设置光标的矩形范围。Position:获取或设置光标的坐标。Hide():隐藏鼠标光标。Show():显示鼠标光标。SystemColors:获取系统颜色光标的颜色。...以下是一个具体的案例,用于说明如何在Winform中使用Label控件:在Visual Studio中创建一个新的Winform项目。在Form中添加一个Label控件。

    90911

    Unity3d 制作一个立体旋转相册

    本来是打算做个 Gif 动态图给大家看效果的,但是图片太大了 25M 我就不敢放出来了,在文章最后放了运行效果的链接 这个效果很简单,做法可以分为三个部分,第一个部分是模型部分,或者说 Scane 里面的内容...接着选择 Cube 将图片 s1 拖放到 Cube 上,大概的效果就是在 Cube 的 Mesh Renderer 的材料的元素0显示了拖进去 s1 元素,同时可以看到 Cube 被 S1 贴图 ?...切换贴图内容 新建一个 C# 脚本,命名是 MeshPainter 将在这里读取本地的图片,按照文件夹的图片,一张张播放 在 C# 中获取一个文件夹里面的所有文件的方法很简单,只需要使用 Directory.GetFiles...创建 Texture2D 需要给定大小,这个大小建议是根据模型来,也就是需要贴到那个模型上 Texture2D texture = new Texture2D(1920, 1080); 通过 LoadImage...方法可以加载图片,参数是一个 byte 数组,在 C# 里面读取文件作为 byte 数组的方法可以使用 System.IO.File.ReadAllBytes 方法 texture.LoadImage

    1.7K20

    R如何与Tableau集成分步指南

    在本文中,我们将看到一些超越拖放功能的高级图表。我们将创建计算以深入研究数据以提取洞察力。我们还将看看R如何与Tableau集成和使用。...但是本节我们首先要学习的是如何使下面的趋势线运动: ? 所以让我们开始吧! 导入您的数据集,并创建上述趋势图。我们的X轴是订单日期(月份格式),销售额和利润是度量值。...最后,将销售额拖放到标签 - >快速表计算 - >总计百分比上,以获得我们期望的凹凸图。 1.3甜甜圈图 圆环图是小学图的另一种表现形式。...减小图表的大小,并将颜色更改为白色(尽管此处未显示): ? 要创建双轴,右键单击第二个饼图的Y轴,然后选择双轴,以获得图表。...这意味着这样的图表被用来分析一个度量的累积效应,并且看它是如何作为一个整体增加和减少的。为了更好地理解这一点,让我们想象它。 瀑布图是折线图的衍生物,因此我们将从该图开始: ?

    3.5K70

    【QT】图形视图、动画框架

    图形项支持如下功能: 鼠标按下、移动、释放、双击、悬停、滚轮和右键菜单事件 键盘输入焦点和键盘事件 拖放事件 分组,使用QGraphicsItemGroup通过parent-child关系来实现。...如果没有图像项,则为顶层图像项,其均会在场景的坐标系统中。 所有的图像项都会使用确定的顺序来进行绘制,这个顺序也决定了单机场景时哪个图像项会先获得鼠标的输入。...视图的坐标 视图的坐标就是部件的坐标,视图坐标的每一个单位对应一个像素,原点总是在QGraphicsView视口的左上角,而右下角是宽高。所有的鼠标事件和拖放事件都是使用视图坐标来接收的。...动画框架的主要类关系图如下: 缓和曲线 使用 enum QEasingCurve::Type来设置缓和曲线,枚举值如下: 动画组 使用QAnimationGroup类可以实现复杂的动画,它的两个子类...状态机框架 状态机框架提供一些类来创建和执行状态图,状态图为一个系统如何对外界进行反应提供了一个图形化模型,该模型通过定义一些系统可能进入的状态以及系统怎样从一个状态切换到另一个状态来实现的。

    1.6K30

    使用 React-DnD 打造简易低代码平台

    2021 年很多公司,不管大小,都开始开发低代码平台。低代码即无需代码或只需要通过少量代码,通过“拖拽”的方式即可快速生成应用程序。那么对于开发者而言,我们应该如何入手开发呢?...React-dnd React DnD 是 React 和 Redux 核心作者 Dan Abramov 创造的一组 React 工具库,可以帮助您构建复杂的拖放接口,同时保持组件的解耦性。...,用于约束“拖”和“放”组件的关系,如果字符串不一致就无法回调事件,主要是为了避免页面中多个拖放的实例 item 就是拖动时候传递的数据 end 是拖放结束后的回调 collect 用于获得拖动的状态,...当每次拖动的时候,可以生成一个 uuid,然后使用深度优先遍历树数据 从根节点到叶子节点的由上至下的深度优先遍历树数据。...import { Column } from '@ant-design/charts'; props 增加默认数据就可以直接渲染出漂亮的柱状图了。

    6.2K20

    学习大数据要掌握哪些语言?哪些必备知识和技能呢?

    01 思维导图 下面的是我之前整理的一张思维导图,内容分成几大块,包括了分布式计算与查询,分布式调度与管理,持久化存储,大数据常用的编程语言等等内容,每个大类下有很多的开源工具。...Python和Shell shell应该不用过多的介绍非常的常用,属于程序猿必备的通用技能。python更多的是用在数据挖掘领域以及写一些复杂的且shell难以实现的日常脚本。...分布式计算研究的是如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多服务器进行处理,最后把这些计算结果综合起来得到最终的结果。...创新的拖放计算、数据视图、范围漫游等特性极大地增强了用户体验,赋予用户挖掘和集成数据的能力。...它具有Mashup图、拖放计算、数据视图制作、动态类型切换、图例切换、数据区域选择、范围漫游、多维堆栈等功能。 在Excel中可以选择大量的公式和函数。

    72220

    Python 自动化指南(繁琐工作自动化)第二版:十九、处理图像

    附录 A 有更多关于安装模块的细节。 计算机图像基础 为了操作图像,您需要了解计算机如何处理图像中的颜色和坐标的基础知识,以及如何在 Pillow 中处理颜色和坐标。...这值得重复:y 坐标向下增加,这与你可能记得的数学课中使用的 y 坐标相反。图 19-1 展示了这个坐标系是如何工作的。...图 19-2:框元组(3, 1, 9, 6)表示的区域 用 Pillow 操纵图像 现在你知道了颜色和坐标在 Pillow 中是如何工作的,让我们使用 Pillow 来操作一个图像。...图 19-3 是本章中所有交互式 Shell 示例将使用的图像。可以从nostarch.com/automatestuff2下载。...第四步:添加 Logo 并保存修改 无论图像大小是否调整,Logo仍应粘贴在右下角。Logo应该粘贴在哪里取决于图像的大小和Logo的大小。图 19-12 显示了如何计算粘贴位置。

    2.5K50

    mooc商业数据分析师-入门指南

    使用数据联接、数据清理和数据转换功能来准备数据。1.2.3 创建可视化在“工作表”选项卡中,拖放字段到行和列架构以创建图表。选择合适的图表类型(如折线图、柱状图、散点图等)。...使用“标记”卡片调整图表的颜色、大小、标签等。** 1.2.4 仪表板与故事**创建单个图表后,可以将多个图表组合到一个仪表板中。使用“仪表板”选项卡,将图表拖放到仪表板画布上,调整布局。...编写计算公式,创建新的字段用于复杂分析。1.3.2 参数在数据面板中,右键点击数据表,选择“创建参数”。设置参数的名称、数据类型和允许值。在图表中使用参数,增加交互性。...使用“可视化”面板选择和定制图表类型(如折线图、柱状图、饼图等)。调整图表的格式和交互选项。2.2.4 仪表板创建单个图表后,可以将多个图表组合到一个页面中。使用“页面”选项卡管理和布局图表。...2.3 高级功能2.3.1 DAX(数据分析表达式)使用DAX创建计算列和度量值。编写DAX公式,实现复杂的计算和数据分析。

    13710

    星辰图床,一个免费、快速、安全的图片托管服务网站

    在本文中,我们将详细介绍星辰图床Imgmo的特点和优势,以及如何使用它来管理和托管您的图片。 一、星辰图床的特点和优势 免费 星辰图床是一款完全免费的图片托管服务网站,没有任何隐藏费用或限制。...快速 星辰图床提供了非常快速的图片上传和管理功能。用户只需将图片拖放到上传区域,即可快速上传图片。星辰图床还提供了多种上传方式,包括从文件夹、URL、剪贴板等上传。...此外,星辰图床还提供了快速的图片压缩和优化功能,可以帮助用户快速减小图片大小,提高网站加载速度。 安全 星辰图床采用了高级的安全技术,保护用户上传的图片不受恶意攻击和盗用。...简单易用 星辰图床的界面简单、直观,非常易于使用。用户只需在上传区域拖放图片,即可快速上传图片。...二、如何使用星辰图床 使用星辰图床非常简单,只需按照以下步骤即可: 打开星辰图床的网站(imgmo.com)。 点击“上传图片”按钮,或将图片直接拖放到上传区域。

    3K30

    Wolfram 技术在数字图像处理方面的解决方案

    将图像拖放到代码行或公式行中;应用复杂的图像处理算法;在一个系统中,通过一个集成的工作流程,就可以分析、可视化和生成交互式应用程序。...或地理数据库的可靠、无伪影的数据 •处理用于环境应用的卫星图像,以确定水体的大小、植被和其他土地覆盖物的存在和位置等 •使用内置的机器学习功能将分类器应用于图像或图像功能 •增强和还原航空照片以供农业土地使用...•处理和分析医学图像 •确定工程材料和结构中疲劳裂纹的开发 •分析遥感数据以进行环境研究 •通过卫星数据的数字图像处理来绘制土地覆盖图 •用于计算机视觉应用的场景重建、事件检测、跟踪、对象识别、学习、...索引和运动估计 •金相分析、半导体检查、测试和测量过程以及其他工业成像任务 •针对机器人视觉应用的空域和频域滤波、强度转换、模式识别等 •通过API在web上即时部署图像处理应用程序 Wolfram如何比较...» 图像处理框架与核心Wolfram系统以及20多个内置应用程序区域的紧密集成,例如小波分析和统计 使用Wolfram技术的机构 ?

    85510

    使用jQuery Draggable和Droppable实现拖拽功能

    父节点可以折叠起来 2.用户可以通过拖放的操作,将元素从左侧拖放到右侧。如果是拖的父节点元素,那么需要把它子节点的元素一并拖到右边 3.元素放到右侧,右侧可以接受元素的区域有2种可能。...另外一种就是拖放到已经有元素的区域。两者的关系是“或”。单个元素区域有“非”和“且”的关系。点击右边删除按钮可以删除节点元素。...,所以我使用了一个称之“中间拖拽容易元素”,这div一直在页面上。...父节点和子节点是相对的,因为左侧树形结构的节点可以是无限级的,所以一个元素既可能是子节点元素,也会是父节点元素。通过监听鼠标的mousedown和mouseup事件,来判断用户在拖动元素。...所以我们要计算出我们点击的B元素的位置,然后让draggableDiv在拖动时候显示正确的位置,然后拖动就是draggableDiv元素,用户看起来是拖动的B节点元素。

    2.9K60

    探索 MongoDB - MongoDB Compass 安装配置及使用介绍 | MongoDB GUI

    4 Compass 使用 下面举几个常用操作的例子,了解如何使用 MongoDB Compass。...,即可删除集合: 图4-2-2:Compass 删除集合 Capped Collection 为固定集合,即对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素...点击 ADD DATA 按钮下的 Import File,通过导入 JSON 或 CSV 文件的方式插入文档数据: 图4-3-4:Compass 通过导入文件方式插入文档数据 数据文件来源:《如何快速获取并分析自己所在城市的房价行情...4.8 使用 Mongo Shell MongoDB Compass 集成了 MongoDB Shell,点击界面底部的 >_MONGOSH 即可进入,跟在 MongoDB 服务器中使用 mongosh...图4-8-1:Compass 中使用 Mongo Shell ---- MongoDB Compass 还有其他丰富的功能,大家可以下载安装来使用,进行体验、发掘。

    5.3K32

    Python 自动化指南(繁琐工作自动化)第二版:二十、使用 GUI 自动化控制键盘和鼠标

    PyAutoGUI 的鼠标函数使用 x 和 y 坐标。图 20-1 显示了计算机屏幕的坐标系;这类似于用于图像的坐标系统,在第 19 章中讨论过。原点,其中x和y均为零,位于屏幕左上角。...一个单元的大小因操作系统和应用的不同而不同,所以您必须进行实验,看看在您的特定情况下它到底能滚动多远。滚动发生在鼠标光标的当前位置。传递正整数向上滚动,传递负整数向下滚动。...按钮延迟,然后在按下F6按钮的同时在屏幕上移动鼠标,注意鼠标的 x 和 y 坐标是如何记录在窗口中间的大文本字段中的。您可以稍后在 PyAutoGUI 脚本中使用这些坐标。...图 20-5:Mu 编辑器窗口前(上)和后(下)使用窗口对象属性移动和调整其大小 您还可以找出并更改窗口的最小化、最大化和激活状态。...PyAutoGUI 容易出错的原因是什么? 如何找到标题中包含文本Notepad的每个窗口的大小? 比如说,你如何让 Firefox 浏览器活跃起来,并出现在屏幕上其他窗口的前面?

    8.7K51

    手把手教你Tableau高级数据分析功能(附数据集)

    本文借助高级图表创建计算深入研究数据以提取对数据的分析,并了解R如何与Tableau相互集成和使用。 简介 “查看数据。 显示图表。 讲故事。 吸引观众。”...我们还将看看R如何与Tableau相互集成和使用。 本文假定您掌握丰富的使用Tableau的知识,例如基本图表形成,计算,参数等。...不要担心如何做这些动画!你所看到的被称为动态图表。 使用此功能,您可以实时查看数据中的变化。...10)最后,将“销售额”拖放到标签 - >快速表计算 - >总计百分比上,以获得我们期望的凹凸图。 1.3甜甜圈图 圆环图是初级图的另一种表现形式。...减小图表的大小,并将颜色更改为白色(尽管此处未显示): 4)要创建双轴,右键单击第二个饼图的Y轴,然后选择双轴,以获得图表。

    3.8K60

    Jupyterlab 使用手册:号称要取代 Jupyter Notebook

    3、创建和保存文件 在本节中,我们将快速了解如何使用Jupyter Lab中的文件。 创建文件 只需单击主菜单中的“+”图标即可。...终端 JupyterLab的终端,支持 Mac / Linux 和Windows等各种系统提供的shell。我们可以使用终端在系统shell中运行任何东西,包括vim或emacs等程序。 ?...在Notebook中拖放单元格 ? 编辑器中的tab自动补全 文本编辑器现在具有代码自动完成功能。但是,目前只有在同时打开文本编辑器和控制台时,才能够使用。 ?...虽然现在尚未具有很强的互动性,但很快就会有一些改进。 7、交互式计算 Jupyter的真正强大之处,在于它支持交互式计算,尤其对于数据科学非常有用。...它是一个免费的在线图表软件,可用于制作流程图,流程图,组织结构图,UML,ER和网络图。 安装 jupyter labextension install jupyterlab-drawio 用法 ?

    6.4K60
    领券