Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Окна разной прозрачности


Автор: webgraf 13.5.2009, 17:07
Задача проста. Создать два окна с разной прозрачонстью.
Сделать полупрозрачным  одно окно проще простого:
Код

// устанавливаем нужный стиль
SetWindowLong(hwnd,
              GWL_EXSTYLE,
              GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED);

// Задаем  прозрачность
SetLayeredWindowAttributes(hwnd, 0, (255 * 70) / 100, LWA_ALPHA);

Но, прозрачным становится все окно, включая дочерние. Задать отдельно другую прозрачность, другого дочернего окна, скажем button нельзя...

Пожертвовать ресурсами и создать другое окно с другой оконной процедурой? Пробовал, стопанулся на регистрации класса с ошибкой "Отказано в доступе" . Не уверен что иду правильным путем, потому решил своевременно остановиться и спросить совета гуру.

Как сделать два окна с разной прозрачностью? 

Автор: evkwarrior 14.5.2009, 03:52
Привет. Совсем недавно тоже увлекался этим вопросом, тоже стопанулся, только на другом).
На мой ответ не стоит полагаться, но, возможно, мой совет тебе поможет.
Я смотрел соответствующую главу в MSDN2 по адресу http://msdn.microsoft.com/en-us/library/ms633540.aspx
SetLayeredWindowAttributes вызывается единожды и выставляет флаг WS_EX_LAYERED и всё.
В этой же главе в MSDN есть ссылки на функции UpdateLayeredWindow, TransparentBlt, которые, цитирую, позволяют добиться большей функциональности.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)