Могу ли я изменить толщину границы окна с помощью MFC?

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

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


person user26404    schedule 04.01.2009    source источник


Ответы (1)


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

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

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

person Roger Lipscombe    schedule 04.01.2009