如何从程序窗口外部获取鼠标事件

2024-01-26

我想拖动这个角色。图像 :

所以我使用这个方法来获取鼠标位置:

WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    ...
    switch (message){
    case WM_LBUTTONDOWN:
    case WM_MOUSEMOVE:
        GetCursorPos(&mousePosition);
        break;
    }
    ...
}

程序似乎运行良好,但如果鼠标超出字符位置,程序将不再跟随鼠标光标。

我该如何解决这个问题?


See SetCapture http://msdn.microsoft.com/en-us/library/windows/desktop/ms646262在 MSDN 上:

将鼠标捕获设置为属于当前线程的指定窗口。设置捕获当鼠标位于捕获窗口上方时,或者当鼠标位于捕获窗口上方且按钮仍处于按下状态时按下鼠标按钮时捕获鼠标输入。一次只有一个窗口可以捕获鼠标。

SetCapture..ReleaseCapture允许您暂时将鼠标事件处理扩展到窗口之外的空间[事件源自的地方]。

你有一些示例/演示here http://msdn.microsoft.com/en-us/library/windows/desktop/ms645602%28v=vs.85%29.aspx#drawing_lines:

switch (uMsg) 
{ 
   case WM_LBUTTONDOWN: 

        // Capture mouse input. 
        SetCapture(hwndMain); // <<--- Here we go
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从程序窗口外部获取鼠标事件 的相关文章

  • 如何在没有io的情况下在windows上创建特定大小的文件?

    Windows 上是否有与 posix fallocate 等效的函数 具体来说 我正在寻找一种方法来立即 无需执行大量 IO 创建特定大小的文件 我不关心内容 我尝试过 chsize s 它确实分配了文件 但需要很长时间 如果我右键单击文
  • 当用户拖动列表视图项目时检测何时需要滚动

    介绍 我正在实现列表视图项目的重新排列 而不使用 OLE 拖放 PROBLEM 我已经成功解决了大部分任务 除了当用户想要将项目放置在当前不可见的位置时向上 向下滚动之外 问题 我可以使用以下消息向上 向下滚动列表视图 SendMessag
  • WritePrivateProfileString 未在末尾添加属性

    我正在使用以下命令在 ini 文件中写入一些属性WritePrivateProfileString函数并且一切正常 但是当我添加多行文本时 出现了问题 这是代码和输出 WritePrivateProfileString T General
  • 使用 StretchDIBits 使用 Delphi 6 处理条形码图像 - 输出中缺少条形线

    我的应用程序是在 Delphi 6 中开发的 由于后台处理和大量数据 它消耗大约 60MB 120MB 物理内存 这是一个资源密集型应用程序 该应用程序的功能之一是在进行某些处理后创建条形码图像 如果用户继续生成条形码 那么至少十分之一的条
  • Win32 API:如何读取序列号,或者如果不是数据则在超时内退出

    我需要一个函数来从串行端口读取数据 或者如果在时间间隔内没有数据则返回 例如 在 GNU Linux 上你可以使用poll orselect read Windows 中有类似的东西吗 下面是我尝试过的 它应该可以工作 但是功能获取重叠结果
  • 如何正确使用和实例化现有预览处理程序

    我正在尝试使用现有的预览处理程序来显示文件的预览 我编写了一个简单的测试程序 以 1 查找给定文件的预览处理程序的 CLSID 2 实例化预览处理程序 3 通过流或文件初始化它 4 在基本窗口上渲染预览 这有效 或多或少 It works
  • Win32 自定义绘制树视图控件

    我正在尝试使用 NM CUSTOMDRAW 消息自定义树视图控件 我只是想用灰色绘制所有其他可见的项目 这是绘制的代码 INT CResourceOutliner On WM NOTIFY HWND hDlg WPARAM wParam L
  • 获取保证具有完整(4 位)年份的 LOCALE_SSHORTDATE 的正确方法是什么?

    我想创建一个日期时间选择器控件 它显示日期和时间 作为DTS SHORTDATECENTURYFORMAT and DTS TIMEFORMAT风格 由于日期时间选择器中没有内置这种样式 因此我必须自己做GetLocaleInfoEx 我注
  • C# - 如何将 IntPtr 缓冲区数据保存到文件(最快的方法)?

    我使用此代码将非托管代码中的 IntPtr 缓冲区中的字节保存到文件中 这是一个简单的回调函数 private void callback IntPtr buffer int length byte bytes new byte lengt
  • 如何使用 Python 与窗口的 GUI 交互?

    假设您想打开myapp exe 打开第三个菜单 然后选择第二个菜单项 即像用户使用键盘或鼠标一样 然后在对话框窗口中选择第二个按钮 pyahk https pyahk readthedocs io en latest and pyautog
  • Angular2:鼠标事件处理(相对于当前位置的移动)

    我的用户应该能够通过鼠标在画布中移动 或旋转 对象 当鼠标事件发生时 屏幕坐标用于计算与最后一个事件的增量 方向和长度 没什么特别的 mousedown 获取第一个坐标 mousemove 获取第n个坐标 计算deltaXY 按deltaX
  • 检查Windows电源管理是否关闭了显示器

    如何在 Windows 7 和 XP 中以编程方式检查 Windows 电源管理 是否已关闭显示屏 如果能收到一个活动就更好了 我不认为 XP 可以做到这一点 Windows 7 中有各种与电源管理相关的好东西 这Windows API 代
  • 如何使用 C++ 禁用另一个进程中窗口上的关闭按钮?

    我需要从另一个进程禁用窗口上的关闭按钮 我有它的句柄hWnd我尝试这样做 DWORD dwCStyle GetClassLongPtr hWnd GCL STYLE SetClassLongPtr hWnd GCL STYLE dwCSty
  • 使用 BitBlt 捕获程序窗口始终返回相同的图像

    我编写了以下代码 C Win32 来捕获游戏窗口屏幕并从图像中获取像素颜色数组 函数 autoB 完成这项工作 然后我将结果数组绘制到窗口中以直观地检查我得到的结果 问题是 这个程序在我启动计算机后只工作一次 在第一次 缓存 从游戏中获取的
  • 资源文件是否编译为 UNICODE 或 ANSI 代码页?

    首先 如果这个问题已经被回答了一百次了 我深表歉意 噢 但我的搜索显然很糟糕 因为我没有运气回答这个基本问题 EXE DLL中的资源是如何存储的 作为 UNICODE UCS 2 Windows 本机内部字符格式 还是使用资源块的代码页作为
  • 调整大小时在窗口中绘图留下未绘制的边框

    我遇到的问题看似微不足道 但我找不到解决的方法 这里是 我有一个窗口 里面有一些图形 为了简单起见 我们假设它是一个实心绿色矩形 填充了窗口的整个客户区域 我希望每次窗口改变大小时都重新绘制这个矩形并填充整个窗口 我最初做的就是这样的 我已
  • 如何在Delphi中显示Vista风格的气球提示?

    在输入验证时 我使用气球提示而不是消息框 我的问题是 在 Vista 上 它们具有带圆角的旧 XP 样式 而不是较新的矩形外观 我尝试使用 CreateWindowEx 创建它们并且tooltips class32或使用 SendMessa
  • win32上的64位Anaconda使用32位还是64位?

    我猜答案是 32 位 但我有点困惑为什么我什至可以在 win32 中安装 Anaconda 64 我曾经在 Anaconda 64 位上工作 但我刚刚意识到我的系统是 win32 这有时会产生一些异常 例如 请参阅我为 scipy 打开的这
  • 在运行时,我如何判断我是否在 WinXP+ 上? win32

    我正在进行一些 win32 字符串 API 调用 并假设字符串以宽字符串形式出现 这在 XP 和更高版本上有效 我该如何断言这一点 这是运行时检查还是编译时检查 我做错了吗 这是一个例子 typedef std basic string
  • 如何使用 Win32 API 与 com 端口 (RS232) 通信

    我正在尝试使用 win32 API 与 com 端口对话 我找到了这个http www robbayer com files serial win pdf http www robbayer com files serial win pdf

随机推荐

  • 为什么类型化可选参数不能有默认值 Null?

    在 ActionScript 3 中 当您通过给定默认值来声明可选参数时 该值null不能用于类型参数 function Action Param int null 1184 Incompatible default value of ty
  • 主类中的 Spring-Boot @Autowired 变为 null

    我想连接到 Sonic Broker 主题并侦听任何传入的 XML 消息 我做了如下的事情 应用程序 java SpringBootApplication ComponentScan com mainpack com msgpack jms
  • 如何避免数组超出范围

    有人知道如何避免错误array out of range当尝试在指标缓冲区中显示大量柱 比方说 7000 时 我有一个类似的问题 我总是遇到 Array out of range 我的一个缓冲区出现错误 我检查过ArraySize 返回了0
  • 如何在 Eclipse 上设置 PHP 分析?

    我已经在 Galileo 上设置了 Eclipse PDT 我能够运行和调试在 XAMPP 上设置的 PHP 站点 问题是 我想分析其中一个网站 但我无法弄清楚如何设置它 当我右键单击 PHP 项目时 会出现一个分析菜单 但没有指示如何从那
  • 在 postgreSQL 中创建表

    我不明白这个查询有什么问题 查询工具不想在 PostgreSQL 中创建表 CREATE TABLE article article id bigint 20 NOT NULL auto increment article name var
  • 通过chart.js中图例的一键事件隐藏或显示两个数据集

    我想展示 30 天的 2 个班次的机器停机时间的可视化 白天 12 小时 和夜间 12 小时 因此 我将堆叠条形图与组一起使用 并且看起来不错 接受我不想让图例显示两个班次 白天和晚上 带组的堆积条形图 https i stack imgu
  • struts2 修剪从表单获得的所有字符串

    我使用struts2开发Web应用程序 我想改进从表单中获取字符串的方法 为此 需要修剪所有字符串 如果获得的字符串为空 则设置null到字段 为此 我创建了字符串转换器 public class StringConverter exten
  • 是否可以从 http 标头中找到文件名

    通常在下载文件时 假设使用QNetworkAccessManager 文件名不存在于链接末尾 在这种情况下如何获得正确的文件名 即使链接不包含名称提示 Firefox 也始终会下载具有正确名称和扩展名的文件 我们可以使用 mime 类型获得
  • Log4j2 Syslog Appender(TCP 协议)在多行中发送异常堆栈跟踪并显示错误的日志级别

    我正在使用 log4j2 和 syslog 附加程序 我使用 TCP 作为协议和 Kiwi 系统日志服务器 发送错误消息时 异常堆栈跟踪通过 TCP 分多行发送 每一行位于一个数据包中 堆栈跟踪的第一行显示 Kiwi syslog 服务器中
  • 如何从 C# 显示“显示设置”窗口

    如何从 C 显示 Windows 显示设置 分辨率设置 窗口 可以调整屏幕分辨率的那个 我找到了一种方法通过 p invoke 更改显示设置 http pinvoke net default aspx user32 ChangeDispla
  • DocuSign API:在同一信封中发送多个文档的签名问题

    使用 C DocuSign API SDK 4 5 2 我将在同一个信封中寄出 3 份文件以供签名 每个文档将使用相同的服务器模板 它只是使用锚标记将签名元素放置在文档上 我可以寄出信封 然后从 DocuSign 收到电子邮件以查看 签署文
  • 仅返回具有最近 TIME 值的记录?

    我有一个表需要进行一些数据转换 这是一个简单的跟踪表 如下所示 SSN9 0 KEY 例如 123456789 非空 DATE8 0 KEY 例如 20131202 非空 TIME6 0 KEY 例如 133000 非空 打印 新Z 例如2
  • 使用 Namecheap DNS 的 Amazon S3 静态托管 - 如何正确路由非 www 前缀 URL

    我一直在阅读其他帖子 试图深入了解这个问题 但我需要一些澄清 当我进入时 我能够让所有域请求完美地到达我的 Amazon S3 存储桶www example com MyDirectory 如果我输入example com MyDirect
  • 使用 Glide 加载到 Imageview 但延迟

    我使用 Glide 从 Firebase 加载 ImageView 当我运行我的应用程序时 我的 ImageView 会延迟 就像我视频中的牙齿一样 https www youtube com watch v 6Mj0Xq3M8n0 htt
  • DB Design允许用户定义产品、产品规格并让自己插入订单

    我正在设计一个数据库 因为我需要开发这样一个 CRM 用户可以在其中指定新产品 产品规格和定价 然后让自己为上一步中指定的产品插入订单 当然 插入的数据需要根据它们在数据库中指定的内容进行评估 我举个例子可能会更清楚 user1 创建一个产
  • 我的项目不支持多设备屏幕视图

    我有一个菜单屏幕 XML 当我打开项目宽屏幕时 它不适应所有屏幕尺寸 我怎样才能克服这个问题 当我想添加有关此问题的图片时 我认为我需要 10 次代表 观点 有人可以帮助我吗
  • 寻找 C++ 的应用程序 GUI 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在考虑编写一个非常简单的绘画程序 我想要一种更高级的方法来将数据输入到我的程序中 例如颜色 画笔的
  • 命名空间“卡住”为终止,我如何删除它

    我有一个 卡住 的命名空间 我删除了它 显示在这个永恒的 终止 状态中 假设您已经尝试强制删除资源 例如 Pod 停留在终止状态 https stackoverflow com q 35453792 而你却束手无策地试图恢复名称空间 您可以
  • 命令行从 TFS“获取最新”,无需映射工作区等

    我假设 tf exe get project recursive 需要这个奇怪的工作区映射 已知的 TFS 服务器等 有什么办法可以做这个最简单的事情 连接到thisTFS 服务器使用this一组凭据 获取最新的源代码this项目并把它he
  • 如何从程序窗口外部获取鼠标事件

    我想拖动这个角色 图像 所以我使用这个方法来获取鼠标位置 WndProc HWND hWnd UINT message WPARAM wParam LPARAM lParam switch message case WM LBUTTONDO