Сохранение формы расположения и размера для двух мониторов - PullRequest
2 голосов
/ 21 января 2011

У меня есть код, который сохраняет размер формы и местоположение при ее закрытии, а также позиционирует и измеряет форму при загрузке.

Я хочу принять во внимание, что при загрузке возможно, что сохраненное местоположениеза пределами экрана.Легко проверить в настройке одного монитора, но как это сделать на нескольких мониторах.Я не знаю, установлены ли экраны горизонтально или вертикально и т. Д. Почему-то мне нужно определить объединенную область всех экранов и выяснить, находится ли сохраненное расположение форм в этой области.

Ответы [ 2 ]

1 голос
/ 21 января 2011

Хорошая пара функций для запоминания и восстановления состояния окна: GetWindowPlacement и SetWindowPlacement. GetWindowPlacement извлекает не только текущее состояние и положение нормального окна, но и для развернутого окна его местоположение до того, как оно было развернуто.

Для ваших целей SetWindowPlacement полезен, потому что знает, как подтолкнуть окно к ближайшему экрану, если его попросят восстановить его за пределами экрана:

Если информация, указанная в WINDOWPLACEMENT, приведет к тому, что окно будет полностью за пределами экрана, система автоматически настроит координаты так, чтобы окно было видимым, принимая во внимание изменения в разрешении экрана и конфигурации нескольких мониторов.

К сожалению, я не знаю готового .NET-эквивалента этих двух функций, хотя их просто вызвать через P / Invoke (см. http://pinvoke.net).

1 голос
...