【问题标题】:How to detect that WPF window has been snapped in Windows 7如何在 Windows 7 中检测 WPF 窗口已被捕捉
【发布时间】:2011-03-26 09:39:47
【问题描述】:

Windows 7 具有捕捉功能,可将窗口“捕捉”到边缘,并更改窗口尺寸的一个尺寸以匹配屏幕的相同尺寸,然后为另一个尺寸选择另一种尺寸。

我想检测它是否已经发生,以便在我的带有自定义镶边的 WindowStyle.None 窗口中,我可以实现双击标题栏的正确行为。

捕捉不会改变 WindowState,所以我无法检测到它已经发生。由于只有一维窗口设置为与屏幕匹配,因此我无法区分捕捉窗口和用户调整大小的窗口。 Win7 是否会发送特定消息,或者在导致调整大小时在 WM_xxxx 消息中包含标志?是否在任何地方定义了另一个维度(不是与屏幕匹配的维度)的公式,以便我可以检查两个维度是否与捕捉窗口的维度匹配?

【问题讨论】:

    标签: wpf windows-7


    【解决方案1】:

    您是否尝试过使用 spy++ 来查看窗口消息以查看按什么顺序发送的内容?也许那里有一个额外的消息,windows正在使用。

    【讨论】:

    • 是的。它调用 WM_WINDOWPOSCHANGING,然后是 WM_WINDOWPOSCHANGED,然后是 WM_MOVE,最后是 WM_SIZE。它与 SetWindowPos() 调用的消息流相同。此外,WM_SIZE 具有类型 SIZE_RESTORED 作为设置。我可以捕获调整大小事件并检查宽度和高度,但我只能根据快照确定高度。宽度基于屏幕大小,但我不知道使用的公式。我想到的另一件事是检查高度是否 == Screen.Height,以及(Left == Top == 0)或(Right == Screen.Right && Top == 0)。这似乎给了我一个“足够接近”的场景。
    猜你喜欢
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多