Можно ли изменить размер свернутого окна в MDI C # Winforms - PullRequest
3 голосов
/ 27 января 2011


Пользователи жалуются на то, что, когда у них есть несколько свернутых окон в контейнере MDI, их невозможно различить, если они не восстанавливают каждое из них. Интересно, можно ли сделать свернутое окно немного шире, чтобы текст в заголовке мог содержать 6 символов?
Заранее спасибо!

1 Ответ

6 голосов
/ 27 января 2011

Нет, это невозможно. Windows определяет ширину свернутого окна, используя текущие системные параметры, и невозможно изменить это динамически для одного приложения без изменения значений во всей системе..

В частности, размер всех свернутых окон по умолчанию - 160x31.В приложении MDI вы действительно можете увидеть этот размер, потому что окно свернуто в его хост MDI, а не в панель задач Windows.Рэймонд Чен (Raymond Chen) (разработчик из команды Windows Shell в Microsoft) недавно опубликовал несколько записей в блоге, в которых объясняется, почему был выбран именно этот размер и что он означает.Первый доступен здесь: Почему минимизированные окна имеют видимый размер 160x31? И вторую дополнительную запись можно прочитать здесь: Нет, действительно, почему это 160x31? Как он объясняет во втором посте:

Ширина миниатюрной строки заголовка определяется элементом iWidth структуры MINIMIZEDMETRICS.Вы можете получить и изменить эту структуру с помощью функции SystemParametersInfo.(Используйте флаги SPI_GETMINIMIZEDMETRICS и SPI_SETMINIMIZEDMETRICS соответственно.) Некоторые люди упоминают значение реестра MinWidth, но эти люди ошибаются.Обратите внимание, например, что для работы с MinWidth требуется цикл выхода из системы, тогда как использование SPI_SETMINIMIZEDMETRICS вступает в силу немедленно.Это связано с тем, что SPI_SETMINIMIZEDMETRICS обновляет внутренние переменные состояния, тогда как взлом реестра вносит изменения в базу данных, на которую никто не обращает внимания после того, как вы вошли в систему.

А как насчет высоты?Это просто высота панели заголовков, которую вы можете настроить на вкладке «Внешний вид» панели управления «Дисплей».(Программно, вы можете использовать эту полезную функцию SystemParametersInfo, на этот раз используя iCaptionHeight член структуры NONCLIENTMETRICS.)


Так как я сомневаюсь, что ваши пользователи действительно хотят, чтобы вы пошутилис их системными параметрами по умолчанию P / Invoking функции SystemParametersInfo , у вас не останется много вариантов.Моя рекомендация, особенно если они работают с одним окном за раз, а остальные свернуты, - переключиться на альтернативный интерфейс.Цель MDI состояла в том, чтобы позволить пользователям размещать или каскадировать несколько окон, чтобы они могли видеть более одного одновременно.Поскольку это звучит так, как будто это не типичный вариант использования, вам обоим будет лучше, если вы переключите приложение на использование вкладок.Это часто называют интерфейсом документа с вкладками (TDI) , несколько более современной реализацией старого интерфейса с несколькими документами (MDI).Это стало довольно популярным за эти годы;проверить статью в Википедии .

...