@s2sk

Как изменить дефолтный вид контролов в Windows?

Привет всем.

Чет не могу разобраться как изменить стандартный вид окон.

Допустим создал инпут филд CreateWindow("EDIT", ...); как теперь ему закруглить края, сделать тень, изменить фон, установить цвет обводки и текста в нем? И тоже самое с кнопками.

Пожалйста, не надо предлагать QT и прочее
  • Вопрос задан
  • 571 просмотр
Пригласить эксперта
Ответы на вопрос 1
SerJook
@SerJook
кодер
В Winapi нельзя гибко изменять внешний вид контролов, как это можно делать в HTML/CSS.
Могу сказать про кнопку.
Установите ей стиль BS_OWNERDRAW, а в родительском окне обрабатывайте сообщение WM_DRAWITEM и рисуйте кнопку, как вашей душе заблагорассудится. То есть вам по сути с нуля придется повторить поведение кнопки во всех ее состояниях (наведен курсор/нажата/отжата/дизэйблена и т.д.). В зависимости от того, чего вы хотите добиться, вы можете использовать для отрисовки GDI/GDI+ или другую графическую библиотеку. Если вы хотите, чтобы кнопка была похожа на стандартную, используйте Visual Styles API.
С Edit контролом труднее. Он не поддерживает ownerdraw. Чтобы убрать бордер, убедитесь, что у него нет стилей WS_BORDER и WS_EX_CLIENTEDGE.
Чтобы изменить цвет текста или фона, обрабатывайте в родительском окне WM_CTLCOLOREDIT. Тень и бордер вы можете вручную нарисовать вокруг edit-контрола в родительском окне.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы