gpt4 book ai didi

winapi - 有关 GetWindowPlacement 返回数据的问题

转载 作者:行者123 更新时间:2023-12-02 19:57:28 24 4
gpt4 key购买 nike

我有点不确定调用 GetWindowPlacement() 函数的某些返回值的含义,因此请您提供帮助。

我将调用它来获取隐藏窗口的正常尺寸。

首先,showCmd字段的值从何而来?在返回结构( WINDOWPLACEMENT structure )的 Microsoft 文档中,所有可能值的描述都使用动词/ Action 词;例如,“SW_MAXIMIZE:最大化指定窗口”或“SW_SHOWNOACTIVATE:以最新大小显示窗口,并且位置。”

我想获取隐藏窗口的尺寸,而不先取消隐藏/恢复它,因此使用动词,似乎我必须在调用 GetWindowPlacement 之前调用 SetWindowPlacement() 并将 showCmd 设置为 SW_SHOWNOACTIVATE 。这是正确的吗?

那么我是否正确理解该字段获取其各种值的主要(也许是唯一)方式是通过在某处显式调用 SetWindowPlacement() ?

我的第二个问题与 rcNormalPosition 返回值有关。这些数据是否包括 window 装饰,或者它们是客户值?

感谢您的宝贵时间!

最佳答案

WINDOWPLACement 结构的 showCmd 成员的含义有点令人困惑,因为 Win32 正在重用 ShowWindow() 使用的 SW_* 命令。

幸运的是,其含义记录在 GetWindowPlacement() 函数中。

If the window identified by the hWnd parameter is maximized, the showCmd member is SW_SHOWMAXIMIZED. If the window is minimized, showCmd is SW_SHOWMINIMIZED. Otherwise, it is SW_SHOWNORMAL.

因此,根据返回的这 3 个值中的哪一个,您可以判断窗口当前是最大化、最小化还是正常(恢复)。如果您想知道正常位置是什么,您可以使用 rcNormalPosition 成员。您根本不需要调用 SetWindowPlacement()

但是,请注意 GetWindowPlacement() 返回工作空间坐标而不是屏幕坐标的警告,后者根据任务栏位置和大小而有所不同。如果您仅使用 GetWindowPlacement() 返回的坐标来调用 SetWindowPlacement(),则这不是问题。否则,您可能必须找到一种从工作空间转换为屏幕坐标的方法。

关于winapi - 有关 GetWindowPlacement 返回数据的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56725723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com