Можно ли изменить толщину границы окна с помощью MFC? - PullRequest
4 голосов
/ 04 января 2009

Обычно толщина окна составляет 4 пикселя, что можно получить методом GetSystemMetrics. Могу ли я изменить его значение, например, 2 пикселя?

Большое спасибо!

1 Ответ

8 голосов
/ 04 января 2009

Простой ответ: Нет. Не для определенного окна.

Сложный ответ: граница рисуется как часть "не клиентской" области окна. Все это обрабатывается (скрыто) обработкой по умолчанию (то есть DefWindowProc) вместе с надписью, кнопками свертывания, максимизации и т. Д. Вы можете изменить это, обработав сообщение WM_NCPAINT. Затем вы будете нести ответственность за рисование всей не клиентской области вашего окна. Вы также захотите обработать сообщение WM_NCCALCSIZE, чтобы Windows знала, сколько оставшегося пространства отвести вашей клиентской области.

Кроме того, вы можете установить стиль рамки вашего окна на none. Это позволит Windows нарисовать подпись для вас, хотя, вероятно, она будет выглядеть немного иначе. К сожалению, делая это, вы теряете функцию перетаскивания. Для этого вам нужно обработать сообщение WM_NCHITTEST.

...