Расположение развернутого окна с пользовательским хромом - PullRequest
1 голос
/ 18 февраля 2012

Я создал окно с пользовательским Chrome:

  1. Обработка WM_NCHITTEST и возвращение соответствующих значений для заголовка и границ окна,
  2. Глотание WM_NCPAINTWM_NCUAHDRAWCAPTION, WM_NCUAHDRAWFRAME),
  3. Обработка WM_SETTEXT, WM_SETICON и WM_NCACTIVATE с DefWindowProc путем временного удаления WM_VISIBLE,
  4. Обработка WM_WINDOWPOSCHANGEDчтобы применить область окна для закругленных углов.

Перемещение / изменение размера прекрасно обрабатываются Windows.Я добавил WS_THICKFRAME в стили окна, чтобы включить функцию Aero Snap.Но теперь, когда окно развернуто до максимума, оно расположено на (-5,-5), и моя пользовательская заголовок обрезается (этого не происходит без WS_THICKFRAME).

Как правильно это исправить?Что влияет на эту позицию?Кажется, это не связано со значениями, возвращаемыми для WM_NCHITTEST.

1 Ответ

1 голос
/ 23 июня 2012

Поздний ответ, но, похоже, никто не ответил.

Вы можете проверить, когда окно развернуто, и учесть маржу, когда окно развернуто.Возможно, вы захотите обработать WM_NCCALCSIZE, а не WM_NCPAINT, чтобы все окно отображалось в качестве клиентской области, а не рисовало неклиентскую область.

Это описывает один подход к реализации пользовательского Chrome (я был автором): http://blogs.msdn.com/b/wpfsdk/archive/2008/09/08/custom-window-chrome-in-wpf.aspx

Надеюсь, что поможет,

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