.Net / Winforms, Двойной монитор - Окно без полей - Развертывание не работает

У меня есть вопрос, на который нет ответа

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/fa521007-f317-48f1-9cdd-de2dbcb17aa8.

(последние сообщения - это мои сообщения). StackOverflow - лучший форум, не могли бы вы мне помочь :)

Вкратце:

  • конфигурация с двумя мониторами, основной монитор справа имеет меньшее разрешение, левый монитор с более высоким разрешением (lo: 1280x1024; hi: 1680x1050). При максимальном увеличении размер окна больше монитора (работает только на левом мониторе)
  • работа над базовым классом окон без полей
  • развернуть до фактической клиентской области не работает должным образом. Решается добавлением ловушки WndProc и изменением параметров размера. Поддержка нескольких мониторов добавила некоторые проблемы, потому что максимальное увеличение, похоже, полагается на MaxTrackSize, а не на MaxSize. Кажется, это происходит только тогда, когда основной монитор меньше второго монитора.

Что-то я нашел в спецификации:

http://msdn.microsoft.com/en-us/library/ms632605(v=VS.85).aspx.

Для систем с несколькими мониторами члены ptMaxSize и ptMaxPosition описывают максимальный размер и положение окна на основном мониторе, даже если окно в конечном итоге разворачивается на дополнительный монитор. В этом случае диспетчер окон корректирует эти значения, чтобы компенсировать различия между основным монитором и монитором, отображающим окно. Таким образом, если пользователь оставляет ptMaxSize нетронутым, окно на мониторе большего размера, чем основной монитор, увеличивается до размера большего монитора.

Итак, если я правильно понимаю, в моем случае невозможно развернуть экран с более высоким разрешением, когда панель задач размещена так, чтобы не скрывать ее под развернутым окном?

Ура, JBK


person jotbek    schedule 13.12.2010    source источник


Ответы (2)


Вы можете реализовать собственное «максимизирование»:

  1. Определите, на каком экране находится ваша форма, с помощью Screen.FromControl
  2. Установите смещение и размер вашей формы в соответствии с смещением и размером экрана.
  3. Вы можете использовать либо рабочую область (область рабочего стола), либо границы (весь экран с панелями инструментов) экрана по мере необходимости.

* Если вы хотите скрыть панели инструментов и работать в полноэкранном режиме, я думаю, вам нужно будет установить форму как TopMost.

person maximbr    schedule 16.02.2011

Вот что сработало для меня:

  1. Установите для FormBorderStyle значение FixedSingle - также может работать с другими стилями! = Нет, не тестировал ...
  2. Установите для WindowState значение FormWindowState.Maximized.
  3. Сбросьте FormBorderStyle на Нет

По крайней мере, это работает для чистого материала WinForms, не прибегая к WinAPI.

person Basuro    schedule 14.06.2013