【问题标题】:How to detect window was resized by Windows7如何检测窗口被 Windows 7 调整大小
【发布时间】:2010-01-04 11:43:56
【问题描述】:

[问题]

1。如何检测窗口(WPF)被Aero Snap调整大小?那么我可以忽略新的大小和位置。

提前感谢您的回答和cmets。

【问题讨论】:

  • 了解您在这里想要达到的目标可能会有所帮助,因为我怀疑答案将是:您无法判断。但可能还有另一种方法可以解决您的问题。
  • 您想知道窗口何时调整大小吗?或者特别是 Aero Snap?如果特别是 Aero Snap,为什么?正如理查德所说,如果我们知道真正的问题,可能还有其他方法可以提供帮助。
  • 感谢您的建议,我需要在 Aero 拍摄之前保存位置和大小。
  • 为什么以前?如果我希望窗户在我离开的地方重新打开怎么办:卡到一侧?否则,您将在我过去其他时间拥有它的某个随机位置打开它,这显然是我不想要的,或者我不会将它捕捉到我关闭它时的位置......
  • 嗨,约翰,感谢您的 cmets。我试过“Microsoft Office Word”和“记事本”,这些应用程序不记得“Aero Snap”的位置和大小。所以这就是为什么我想在“Aero snap”之前获得尺寸和位置。

标签: .net windows-7


【解决方案1】:

退出时,请致电GetWindowPlacement。这将返回当前窗口大小和位置,无论您是最小化、最大化还是恢复,它还会为您提供最新的“恢复”窗口大小和位置。

因此您不必跟踪窗口位置的变化,只需在需要时询问即可。

typedef struct _WINDOWPLACEMENT {
    UINT length;
    UINT flags;
    UINT showCmd;
    POINT ptMinPosition;
    POINT ptMaxPosition;
    RECT rcNormalPosition;
} WINDOWPLACEMENT;

【讨论】:

  • 为什么要使用带有 P/Invoke 的 Win API 调用?我认为最好避免这些并寻找一个纯 .NET 类库的解决方案。
  • @Oliver:P/Invoking 没有问题。 .NET Framework 提供该功能是有原因的:这样您就可以做它尚未提供托管实现的事情。这里的简短回答是没有可以做到这一点的托管实现,因此 P/Invoking 是您唯一的选择。
猜你喜欢
  • 2013-02-10
  • 2021-03-26
  • 1970-01-01
  • 2019-02-21
  • 1970-01-01
  • 2020-01-29
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
相关资源
最近更新 更多