【问题标题】:How to vertically resize a window in code?如何在代码中垂直调整窗口大小?
【发布时间】:2015-12-11 19:03:42
【问题描述】:

如果我双击窗口的上边框,它将从桌面的顶部到底部垂直调整大小,但保留其宽度。

我如何在代码中做到这一点?

【问题讨论】:

  • 我重新标记为 winapi。好问题。
  • 没有公开专用 API 来调用 Aero 快照功能(请参阅 Programatically invoke Snap/Aero maximize)。归结为使用适当的值调用SetWindowPos。不幸的是,这只是近似的效果。当您开始将顶部边框拖离边缘时,窗口将不会恢复其下边缘。 @MartynA:您单击了标题栏,而不是顶部边框。当您到达边框而不是标题栏时,光标会改变其形状。
  • 不应该有办法发送消息(SendMessage)以这种方式调整窗口大小吗?
  • @IInspectable: "当你到达边界时光标会改变它的形状" 是的,但是在我的机器上显示垂直大小箭头时,dbl-click 没有任何作用。
  • 您可以尝试 SendInput 一个 WinKey+Shift+Up,尽管由于 WinKey 的使用,这并不完全是微不足道的。

标签: winapi


【解决方案1】:

可能只是这个代码:

with Screen.MonitorFromWindow(Handle).WorkareaRect do
  SetBounds(Self.Left, Top, Self.Width, Height);

下面的替代方案添加了一个动画:

Hide;
with Screen.MonitorFromWindow(Handle).WorkareaRect do
  SetBounds(Self.Left, Top, Self.Width, Height);
AnimateWindow(Handle, 200, AW_ACTIVATE or AW_VER_POSITIVE);

为了能够恢复到以前的大小,我认为可以使用SetWindowPlacement,但我无法让它工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 2020-06-09
    相关资源
    最近更新 更多