WinAPI — Пользовательская граница размеров (WS_THICKFRAME)

Мне не нравится, как выглядит родная граница размеров:

Видишь синюю границу?

Я хотел бы иметь что-то вроде этой причудливой фиолетовой границы вместо этого:
введите описание изображения здесь

Должен ли я реализовать свой собственная граница размеров вручную или я должен продолжать использовать Стиль окна WS_THICKFRAME и настроить его?

И если бы я мог настроить это, я бы хотел, чтобы это было сделано без неприятных хаков тоже …

2

Решение

Я думаю, что вы должны реализовать свою собственную процедуру перерисовки (например, нарисовать фиолетовый прямоугольник внизу, а затем нарисовать значок в углу). Если вы хотите, чтобы ваше окно было похоже на окно VS2013, вам следует использовать WS_POPUP стиль, а затем реализовать свою собственную процедуру перерисовки. Если вы хотите настроить форму вашего окна, вы можете использовать регионы (SetWindowRgn(), CreateRectRgn(), CreateRoundRectRgn(), CreateEllipticRgn(), CreatePolygonRgn()и т. д.) Вообще говоря, используя WinAPI, вы можете делать все, но вы ограничены только WinAPI? Рекомендуется использовать MFC или Windows Forms, чтобы значительно облегчить создание оконного интерфейса.

0

Другие решения

Вы можете создать окно без рамки и заголовка, указав флаг WS_POPUP в флажках типа окна.

Чтобы обработать сообщение WM_NCHITTEST, вы должны проверить, к какой части вашего окна действительно принадлежит определенный пиксель (например, смоляная рамка) и вернуть код для этой части.

Недостаток: вам придется нарисовать все содержимое окна (включая заголовки и т. Д.) Самостоятельно.

0

По вопросам рекламы [email protected]