Win32 检测窗口是否最大化/停靠到半屏(Win 键 + 向左/向右)

2024-04-18

我有一个经典的 Win32-API (C++) 应用程序,需要检测窗口是否停靠在屏幕的左/右半部分。

问题的背景是窗口的大小仅以网格为单位,假设为 32 像素。在全屏模式下,程序会检测到该状态,允许大小与全屏匹配并填充多余的空间。对于 Windows 8 及更高版本,我希望执行相同的操作,而不是当前保留边框(因为大小会对齐到 32 像素的倍数)。


具有功能GetWindowPlacement()您可以使用成员检索正常的窗口矩形rcNormalPosition of WINDOWPLACEMENT。然后将正常矩形与实际窗口矩形进行比较。如果它们不匹配,则窗口很可能处于停靠状态。

Example:

bool IsDockedToMonitor(HWND hWnd)
{
    WINDOWPLACEMENT placement = {sizeof(WINDOWPLACEMENT)};
    GetWindowPlacement(hWnd, &placement);
    RECT rc;
    GetWindowRect(hWnd, &rc);

    return placement.showCmd == SW_SHOWNORMAL
        && (rc.left != placement.rcNormalPosition.left ||
            rc.top != placement.rcNormalPosition.top ||
            rc.right != placement.rcNormalPosition.right ||
            rc.bottom != placement.rcNormalPosition.bottom);
}

请注意,此解决方案并非 100% 可靠。即使窗口停靠在显示器的一侧,正常矩形和当前窗口矩形匹配的可能性也很小。

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

Win32 检测窗口是否最大化/停靠到半屏(Win 键 + 向左/向右) 的相关文章

  • 获取两个字符串之间的公共部分c# [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要的是获取两个单词之间的共同部分并获取差异 例子 场景1 word1 感言 word2 Test 将返回 公共部分Test 不同之
  • 处理 fanart.tv Web 服务响应 JSON 和 C#

    我正在尝试使用 fanart tv Webservice API 但有几个问题 我正在使用 Json Net Newtonsoft Json 并通过其他 Web 服务将 JSON 响应直接反序列化为 C 对象 这里的问题是元素名称正在更改
  • 有什么工具可以说明每种方法运行需要多长时间?

    我的程序的某些部分速度很慢 我想知道是否有我可以使用的工具 例如它可以告诉我可以运行 methodA 花了 100ms 等等 或者类似的有用信息 如果您使用的是 Visual Studio Team System 性能工具 中有一个内置分析
  • Guid 应包含 32 位数字和 4 个破折号

    我有一个包含 createuserwizard 控件的网站 创建帐户后 验证电子邮件及其验证 URL 将发送到用户的电子邮件地址 但是 当我进行测试运行时 单击电子邮件中的 URL 时 会出现以下错误 Guid should contain
  • try-catch 中未处理的异常

    try list from XElement e in d Descendants wix File where e Attribute Name Value Contains temp Name e Parent Parent Attri
  • std::map 和二叉搜索树

    我读过 std map 是使用二叉搜索树数据结构实现的 BST 是一种顺序数据结构 类似于数组中的元素 它将元素存储在 BST 节点中并按其顺序维护元素 例如如果元素小于节点 则将其存储在节点的左侧 如果元素大于节点 则将其存储在节点的右侧
  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • 获取从属性构造函数内部应用到哪个属性的成员?

    我有一个自定义属性 在自定义属性的构造函数内 我想将属性的属性值设置为属性所应用到的属性的类型 是否有某种方式可以访问该属性所应用到的成员从我的属性类内部 可以从 NET 4 5 using CallerMemberName Somethi
  • 为什么 BOOST_FOREACH 不完全等同于手工编码的?

    From 增强文档 http www boost org doc libs 1 48 0 doc html foreach html foreach introduction what is literal boost foreach li
  • C++11 函数局部静态 const 对象的线程安全初始化

    这个问题已在 C 98 上下文中提出 并在该上下文中得到回答 但没有明确说明有关 C 11 的内容 const some type create const thingy lock my lock some mutex static con
  • 禁用 LINQ 上下文的所有延迟加载或强制预先加载

    我有一个文档生成器 目前包含约 200 个项目的查询 但完成后可能会超过 500 个 我最近注意到一些映射表示延迟加载 这给文档生成器带来了一个问题 因为它需要根据生成的文档来访问所有这些属性 虽然我知道DataLoadOptions可以指
  • C# 编译器如何决定发出可重定向的程序集引用?

    NET Compact Framework 引入了可重定向程序集引用 现在用于支持可移植类库 基本上 编译器会发出以下 MSIL assembly extern retargetable mscorlib publickeytoken 7C
  • “MyClass”的类型初始值设定项引发异常

    以下是我的Windows服务代码 当我调试代码时 我收到错误 异常 CSMessageUtility CSDetails 的类型初始值设定项引发异常 using System using System Collections Generic
  • std::bind 重载解析

    下面的代码工作正常 include
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • 为什么我使用google'smtp'无法发送电子邮件?

    我有以下程序使用 smtp gmail com 587 发送电子邮件 namespace TestMailServer class Program static void Main string args MailMessage mail
  • 运行代码首先迁移更新数据库时出错

    我在迁移到数据库时遇到问题 并且似乎找不到我遇到的错误的答案 System MissingMethodException Method not found System Data Entity Migrations Builders Tab
  • 为什么 Ajax.BeginForm 在 Chrome 中不起作用?

    我正在使用 c NET MVC2 并尝试创建一个 ajax 表单来调用删除数据库记录 RemoveRelation 的方法 删除记录的过程正在按预期进行 删除记录后 表单应调用一个 JavaScript 函数 从视觉效果中删除该记录 Rem
  • 热重载时调用方法

    我正在使用 Visual Studio 2022 和 C 制作游戏 我想知道当您热重新加载应用程序 当它正在运行时 时是否可以触发一些代码 我基本上有 2 个名为 UnloadLevel 和 LoadLevel 的方法 我想在热重载时执行它
  • 从类模板参数为 asm 生成唯一的字符串文字

    我有一个非常特殊的情况 我需要为类模板中声明的变量生成唯一的汇编程序名称 我需要该名称对于类模板的每个实例都是唯一的 并且我需要将其传递给asm关键字 see here https gcc gnu org onlinedocs gcc 12

随机推荐

  • 如何使用 SVN 和 .NET 以编程方式进行文件版本控制?

    我们有一个报告生成器 每天 它都会将数据写入 Excel 文件 出于版本控制和文件数据安全的原因 我们需要更改此文件 并将更改提交到存储库中 您推荐您使用过的任何 net SVN API 吗 你应该看看SharpSvn http sharp
  • Spring boot 动态查询

    我的网络应用程序中有一个过滤器 允许按车辆类型 品牌 燃料 州和城市进行搜索 但所有这些过滤器都是可选的 我怎样才能使用存储库来做到这一点 控制器类 RequestMapping value vehicle search method Re
  • 为什么 GCC (9.3.0) 中仍然没有实现 `gets_s()`?

    I know fgets 是更常见和广泛的字符串输入选项 但 C11 已经存在 9 年了 为什么是gets s 还失业吗 即使我添加 std c11 它仍然不起作用 尽管gets s 应该在stdio h 因为它是可选的 还有背后的人gcc
  • Bootstrap 手风琴展开/折叠全部无法正常工作

    这是打破这个的过程 单击乐谱 单击全部展开 折叠 单击乐谱 单击全部展开 折叠 再次单击全部展开 折叠 请注意 音乐符号不会重新打开 尽管您应该能够在函数中看到 逻辑表明所有面板都已关闭并且应该打开 为什么 我究竟做错了什么 HTML
  • 使用 TextFinder 搜索范围比搜索整个工作表慢

    我有一张有很多行的表 数千行 我想在特定列中搜索文本 我在用Range createTextFinder但它超时了 如果Sheet只有4行数据 甚至会超时 This is very slow var found sheet getRange
  • 为什么window.onload事件发生在$(document).ready之前?

    正如该线程中所述 window onload 与 document ready https stackoverflow com questions 3698200 window onload vs document ready The wi
  • shell脚本不通过crontab运行,手动运行正常

    我尝试导出我的路径和变量 但 crontab 仍然不会运行我的脚本 我确信我做错了什么 我有一个运行 jar 文件的 shell 脚本 这无法正常工作 阅读周围后 我发现这通常是由于 cron 通过其自己的 shell 实例运行而导致路径不
  • ArrayListMultimap 与 LinkedListMultimap 有何不同?

    所以 我只是在阅读 javadocArrayListMultimap and LinkedListMultimap为了了解如何使用它们 我开始知道两者都支持重复的键值对 我的意思是相同的键 不同的值 如果我理解正确的话 如果我错了 请纠正我
  • Java中如何从HashMap中获取对象

    我试图在给定密钥时从 HashMap 获取测试对象的速度 但我不太确定该怎么做 我尝试过这种方式 但它是错误的 hash values getSpeed 有什么帮助吗 谢谢 class Test private String id priv
  • 如何将数据库从资产文件夹复制到数据库文件夹

    我的代码如下 dbhelper java Override public void onUpgrade SQLiteDatabase db int oldVersion int newVersion if oldVersion gt new
  • 情节性的javascript。 'plotly_click' 上的不是一个函数

    我正在尝试在我的绘图图表上创建一个 onclick 事件 根据文档 我创建了以下图表 var graphDiv document getElementById uniqueId Plotly newPlot uniqueId charDat
  • 证书和配置文件

    我正在寻找有关对应用程序进行代码签名的不同步骤的更全面的指南 我已阅读配置门户中提供的指南 但我不了解证书和配置文件的概念以及开发人员和发行版之间的区别 在 XCode 中也有不同的方案 使用 XCode 4 我不明白它的目的 我已成功将应
  • 使用格式运算符 % 将 RGB 值的 numpy 数组转换为十六进制

    遵循这个SOquestion https stackoverflow com questions 3380726 converting a rgb color tuple to a six digit code in python使用格式化
  • 在 React 路由器重定向上运行 jquery 脚本

    我正在寻求移植我现有的网站 该网站使用主题来利用反应组件 该主题有很多使 UI 正确渲染的功能 包括几个动画 主题的js导入了很多其他的js库 这意味着我无法编写主题提供的任何 UI 元素的 React 版本 然而 实际上元素可以用作 哑组
  • Angular 2:从父组件获取RouteParams

    如何从父组件获取 RouteParams App ts Component RouteConfig path component HomeComponent as Home path username component ParentCom
  • GAS:从绑定脚本调用附加组件中定义的函数?

    我已经为电子表格编写了谷歌应用程序脚本代码 我想将其中的一部分作为附加组件发布 另一部分 作为绑定到电子表格的脚本 应该能够调用该附加组件中的函数 我在谷歌文档中没有找到任何关于此的提示 我读了如何在库中调用函数 调用附加组件中的函数是否类
  • 从通用接口扩展

    最后一排有什么问题吗 interface I1
  • 使用 ASP.NET 获取 Active Directory 信息,无需用户名和密码

    我正在尝试从 ASP NET Web 应用程序获取本地网络上用户的 Active Directory 信息 Web 应用程序运行在IIS在本地网络上 我想要的 当用户登录网站时 他们可以从 Active Directory 中看到自己的名字
  • Codeigniter CSRF仅对一次ajax请求有效

    我想在 jQuery 的更改事件上将图像上传到服务器上 但使用 codeigniter csrf 我只能上传图像一次 如何使用ajax上传图像以进行多个请求 请记住 当我设置此值时 config csrf protection FALSE
  • Win32 检测窗口是否最大化/停靠到半屏(Win 键 + 向左/向右)

    我有一个经典的 Win32 API C 应用程序 需要检测窗口是否停靠在屏幕的左 右半部分 问题的背景是窗口的大小仅以网格为单位 假设为 32 像素 在全屏模式下 程序会检测到该状态 允许大小与全屏匹配并填充多余的空间 对于 Windows