Я пытаюсь получить эффект медиаплеера для приложения, но я сталкиваюсь с блокпостами вокруг. Это я, или это API?Стекло Windows Vista/7 полностью сломано?
Я начал по телефону:
MARGINS margins = { -1, -1, -1, -1 };
HRESULT result = ::DwmExtendFrameIntoClientArea(m_hWnd, &margins);
и удаление фона в черный на:
OnEraseBkgnd
Все было прекрасно, пока я не добавил окно редактирования. С EditBox места, где появляется черный текст, заменяются стеклом. Проблема вышла из-под контроля с более продвинутыми элементами управления, такими как ComboBoxEx и тому подобное. Те начинают выглядеть беспорядочно.
Яркая сторона с этим подходом заключается в том, что альфа-смешанные изображения выглядят хорошо. И постепенно смешиваются с стеклом.
Решение для полей редактирования, похоже, использует WS_EX_LAYERED с LWA_COLORKEY и использует какой-то ужасный цвет для маскировки стекла и стирание фона для этого цвета. К сожалению, это нарушает другие вещи. Альфа-смешивание на иконах выглядит очень уродливо с тенями, смешанными с радиоактивным зеленым, и само стекло становится доступным для кликов, хотя у меня нет стиля WS_EX_TRANSPARENT.
Третье предложение - это своего рода заказная композиция с GDI +, но это плохой подход, поскольку GDI + является резервным программным обеспечением, и я не могу найти способ рендеринга EditBox или ComboBoxEx на изображение, которое я может использовать для композиции позже.
Я что-то упустил?
Источники в SO также, кажется, сталкиваются с теми же проблемами: link1 link2
Два вопроса, на которые вы ссылаетесь, кажутся почти точными дубликатами того, что вы просите здесь. Каков ваш вопрос: у кого-нибудь есть другие идеи? – 2010-12-06 15:00:27
Эти вопросы описывают часть поведения с RGB (0,0,0), который, кажется, сломан. Я также пробовал маскировать с помощью механизмов WinAPI, которые все еще не работают и вызывают совершенно разные, но одинаково неправильные результаты. Поэтому мне все еще интересно, нашел ли кто-нибудь решение. – Coder 2010-12-06 15:07:26
GDI 24ppp является основной проблемой, эффекты стекла требуют, чтобы альфа была установлена. Ссылка Лев выглядит неплохо. – 2010-12-06 16:00:04