【问题标题】:Determine window snap distance确定窗口捕捉距离
【发布时间】:2014-04-22 20:55:23
【问题描述】:

我正在开发一个为其窗口提供捕捉功能的应用程序;将一个窗口拖到足够靠近屏幕边缘或另一个窗口,它就会卡入到位。

Windows 7 offers a built-in snap feature,为了保持一致性,我想尽可能从操作系统中获取“这个窗口需要多关闭才能被捕捉”指标。然而,GetSystemMetrics 似乎没有什么特别有用的东西,而DWM docs 同样没有帮助。

有什么方法可以让我以编程方式获取这个指标?

【问题讨论】:

  • 睡前阅读您的帖子。到目前为止,我想到的唯一方法是自己迭代所有窗口,或者在 WM_HITTEST、WM_SIZE 或其他东西上执行此“stackoverflow.com/a/2317324/2538382”。然后用所有的矩形自己计算。
  • @Helix 我不确定我自己该如何进行数学运算,因为我希望这个指标可能因系统而异(?),我只能手动计算它在我自己的电脑上。如果您指的是实际的捕捉行为,那没问题,我已经有了相应的代码。我只是想微调捕捉距离以匹配 Windows 本身的捕捉距离。
  • 不是那种可能被记录在案的东西 - 只需选择一个看起来足够接近的值并使用它运行。
  • 您至少可以根据一些其他指标(如边框大小或显示 DPI)上的某个系数来确定数字。这样,您就可以让它以某种方式依赖于人们与鼠标移动精度相关联的设置,为可访问性目的而改变等。

标签: c++ windows winapi


【解决方案1】:

实际上没有这样的指标,因为您要查找的“捕捉距离”实际上始终为 0。

当您在 Windows 7(可能还有 Windows 8,对此不确定)上拖动顶层窗口时,它实际上会在 鼠标指针 碰到屏幕边缘时立即捕捉。

你想要的“捕捉系统”,只要它的 edges 之一比 x 更接近,就会将拖动的窗口捕捉到位另一个窗口的边缘或屏幕的边缘,其中 x 是您要查找的距离(通常为 10 像素左右)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-04
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 2019-04-01
    相关资源
    最近更新 更多