Переопределение не-клиентских стилей окна в Windows - PullRequest
1 голос
/ 06 ноября 2010

Я заметил, что все больше приложений Windows не имеют обычных оконных рамок, не связанных с клиентом, и кнопок «Развернуть / Свернуть / Закрыть».Примеры включают в себя программное обеспечение Zune player и клиентское приложение MetroTwit Twitter.

Мой вопрос: как это сделать, не прибегая к нативному API-кодированию?Можно ли создавать такие приложения, используя .Net (переопределяя Form.OnPaint?) Или WPF?

Предложения и / или примеры фрагментов кода приветствуются.

Ответы [ 2 ]

2 голосов
/ 06 ноября 2010

Все они используют один и тот же подход, они просто создают окно без рамки и заголовка. Затем нарисуйте их, стилизовав их так, как они хотят. Легко сказать, кнопка «Закрыть» в правом верхнем углу всегда слегка отключена. Иногда намеренно, конечно.

Для этого не требуется собственного API-кодирования. Но переопределение WndProc () может быть полезно для восстановления некоторых функций, которые теряются, когда вы пропускаете строку заголовка и границу с изменяемым размером. Google WM_NCHITTEST, чтобы найти пример кода, здесь также есть много.

В общем, следите за этим. Окна такого типа с пользовательским стилем часто отображаются в списках Blooper с графическим интерфейсом. Этот - мой любимый пример. На этой же странице это классическая ловушка.

0 голосов
/ 06 ноября 2010

Это легко сделать в .Net (не знаю о WPF). Вот пример кода:

настраиваемый диалог с текстовым полем в winmobile

Это для .Net CF, но он будет отлично работать в приложении WinForms - единственное отличие состоит в том, что свойство стиля границы называется BorderStyle в одном и FormBorderStyle в другом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...