是否可以在MDI C#Winforms中更改最小化窗口的大小

时间:2011-01-27 07:07:50

标签: c# .net winforms mdi mdichild


用户抱怨说,当他们在MDI容器中有几个最小化的窗口时,除非他们对每个窗口进行resore,否则无法区分它们。我想知道是否可以将最小化的窗口放宽一点,因此标题中的文字可以包含6个字符? 提前谢谢!

1 个答案:

答案 0 :(得分:6)

不,这是不可能的。 Windows使用当前系统参数确定最小化窗口的宽度,并且无法在不更改整个值的情况下动态更改单个应用程序的宽度系统

具体来说,所有最小化窗口的默认大小为160x31。在MDI应用程序中,您实际上可以看到此大小,因为窗口被最小化到其MDI主机中,而不是进入Windows任务栏。 Raymond Chen(微软Windows Shell团队的开发人员)不久前发布了一些博客文章,解释了为什么选择了这个特定的大小,以及它意味着什么。第一个可以在这里找到:Why do minimized windows have an apparent size of 160x31?第二个后续条目可以在这里阅读:No, really, why is it 160x31?正如他在第二篇文章中解释的那样:

  

微型标题栏的宽度由iWidth结构的MINIMIZEDMETRICS成员决定。您可以借助SystemParametersInfo函数检索和更改此结构。 (分别使用SPI_GETMINIMIZEDMETRICSSPI_SETMINIMIZEDMETRICS标记。)有些人会提到MinWidth注册表值,但这些人错了。请注意,例如,弄乱MinWidth需要注销周期,而使用SPI_SETMINIMIZEDMETRICS会立即生效。那是因为SPI_SETMINIMIZEDMETRICS更新了内部状态变量,而打包注册表只是更改数据库中的值,一旦您登录就没人注意。

     

高度怎么样?这只是标题栏的高度,您可以从“显示”控制面板的“外观”选项卡进行调整。 (以编程方式,您可以使用有用的SystemParametersInfo函数,这次使用iCaptionHeight结构的NONCLIENTMETRICS成员。)


因为我怀疑你的用户真的希望你通过P /调用SystemParametersInfo function搞乱他们的默认系统参数,所以你没有留下很多选项。我的建议,特别是如果他们一次只使用一个窗口并让其他窗口最小化,那就是切换到另一个界面。 MDI的目的是允许用户平铺或级联多个窗口,以便他们可以一次看到多个窗口。由于听起来这不是典型的用例,因此切换应用程序以使用制表符可能会更好。这通常被称为选项卡式文档界面(TDI),这是旧的多文档界面(MDI)的一种更现代的实现。它多年来变得非常受欢迎;查看Wikipedia article