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