3


用户抱怨当他们在 MDI 容器中有几个最小化的窗口时,除非它们重新区分它们,否则无法区分它们。我想知道是否可以使最小化窗口更宽一点,以便标题中的文本可以包含 6 个字符?
提前致谢!

4

3 回答 3

7

不,这是不可能的。Windows 使用当前系统参数确定最小化窗口的宽度,如果不更改整个系统的值,就无法为单个应用程序动态更改此值。

具体来说,所有最小化窗口的默认大小为 160x31。在 MDI 应用程序中,您实际上可以看到这个大小,因为窗口被最小化到其 MDI 主机,而不是 Windows 任务栏。Raymond Chen(Microsoft Windows Shell 团队的一名开发人员)不久前发表了几篇博客文章,解释了为什么选择这种特定大小以及它的含义。第一个可在此处获得:为什么最小化的窗口的外观尺寸为 160x31?第二个后续条目可以在这里阅读:不,真的,为什么是 160x31?正如他在第二篇文章中解释的那样:

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

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


由于我怀疑您的用户是否真的希望您通过 P/Invoking the SystemParametersInfofunction来弄乱他们的默认系统参数,所以您没有太多选择。我的建议,特别是如果他们一次只使用一个窗口并将其他窗口最小化,是切换到替代界面。MDI 的目的是允许用户平铺或层叠多个窗口,以便他们一次可以看到多个窗口。由于这听起来不是典型的用例,因此将应用程序切换为使用选项卡可能会更好地为您服务。这通常称为选项卡式文档界面 (TDI),是旧的多文档界面 (MDI) 的一种更现代的实现。多年来,它变得非常流行。查看维基百科文章

于 2011-01-27T07:33:36.353 回答
0

[虽然这篇文章已有 11 年历史,但我正在尝试......:我遇到了应用程序内最小化窗口的问题,这些窗口在我的 Windows11 上已损坏(当然是软件造成的,但我不知道是哪一个) ...)。那些应用内最小化的窗口比它应该的要窄得多。我只能看到关闭按钮,而不是包含标题和 3 个按钮的最小化标题栏。您在这里说过不可能为独特的软件更改此大小,但我假设您知道(知道)在哪里为整个系统更改它?这是在 ultraedit 1和 3dsMax 中的问题的捕获,例如2

于 2022-02-09T14:07:47.493 回答
0

对于和我有同样问题的人,我找到了解决方案:

(win+r) regedit HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics add the string value "MinWidth".

Change the string value named "MinWidth". Set its value using the following formula: -15*width in pixels

For me, acceptable one was -3300

Little drawback: It also changes size of the minimized windows in the taskbar (make them much wider when there is a few of them in taskbar)

于 2022-02-22T14:31:52.390 回答