【问题标题】:Change the minimum size of an external window更改外部窗口的最小尺寸
【发布时间】:2014-08-26 09:59:39
【问题描述】:

是否可以更改外部窗口的最小尺寸并调整其大小。假设外部应用程序窗口的大小为 (400,400),最小大小为 (200,200),有什么办法可以将其更改为 (100,100)。我有外部窗口的句柄。

我尝试了 MoveWindow 功能

 internal static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);

但是在窗口达到最小尺寸后它不能这样做。难道不能这样做吗?我愿意使用托管的 c# 代码,例如 UI 自动化,甚至是 windows apis、pinvoke 等。有什么建议吗?

【问题讨论】:

  • 我认为不可能超过最小窗口大小,这可能是由于MoveWindow 调用WM_SIZE 会检查此限制。因为它是一个操作系统调用,所以大多数其他东西也会使用它
  • 那么就没有办法调整大小了吗?一定有办法:)通过强大的windows编程可能吗?
  • 没有超过我认为的最小尺寸..它可能你总是可以把它放在一个不同窗口内的流体布局控件中,窗口尺寸较小,但它看起来有点愚蠢,可能不是很用户友好,并且与开发人员的期望相反……请问您这样做是为了达到什么目的?
  • 如果您熟悉 Microsoft Lync,那么 Lync 有一个对话窗口。对于我的某些应用,我想将其调整为超出最小值。
  • 恐怕我不知道,但我会质疑你试图做的事情有多合法......再次,我可能错了,但我认为没有办法跨度>

标签: c# windows winapi pinvoke


【解决方案1】:

可能可以在目标窗口中对某个控件进行子类化,并在控件本身接收到消息之前拦截消息,让您有机会丢弃WM_SIZE 消息 (MSDN article) .但是,这需要 pinvoke 和 windows api 进行大量工作。

编辑:如果您不介意一些体力劳动,This 可能会容易得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 2015-05-30
    • 2014-03-17
    • 2021-04-09
    相关资源
    最近更新 更多