#c #windows #интерфейс
Я видел приложения, окна которых имеют какую-то фантастическую форму. Вопрос: как сделать окно произвольной формы в Windows 7 на Си?
Ответы
Ответ 1
Я знаю такие способы: С помощью функцииSetWindowRgn Простой способ Окно будет "прозрачным" для событий мыши, т.е. не будет реагировать на нажатия мыши в прозрачных областях Не поддерживает альфа блендинг (края будут рваные) С помощью расширенного стиля WS_EX_LAYERED Поддерживает попиксельный альфа-блендинг или хромакей Более сложен в использовании, если нужен попиксельный альфа-блендинг При использовании WS_EX_LAYERED, прозрачные пиксели (хромакей) можно устанавливать так: SetLayeredWindowAttributes(m_hWnd, RGB(R,G,B), 0, LWA_COLORKEY); Естественно, по WM_PAINT вы должны заливать прозрачные области тем же цветом. Если вам нужен попиксельный альфа-блендинг, окно нужно отрисовывать не по WM_PAINT, а особым методом с использованием функции UpdateLayeredWindow (пример). Но есть и подводные камни - по RDP окно отображаться не будет. В этом случае нужно делать fallback на хрома-кей.
Комментариев нет:
Отправить комментарий