2012-10-25 2 views
0

Можно создать дубликат:
Transparent window containing opaque text and buttonsC++: Как использовать SetLayeredWindowAttributes() только в родительском окне?

Я пытаюсь манипулировать существующее окно с C++.

В принципе, то, что я пытаюсь сделать, - установить родительское окно прозрачным, сначала установив его стиль окна на WS_EX_LAYERED, а затем используя SetLayeredWindowAttributes() с правильными значениями.

Проблема в том, что это также придаст прозрачности дочерним окнам, что сделает всю программу прозрачной (очевидно, проблемой).

Любые идеи?

EDIT Изображение демонстрирует проблему: enter image description here

Как вы можете видеть, я установить стиль окна панели задач в WS_EX_LAYERED, но, например, окно MSTaskSwWClass (окно, которое имеет бегущих значки приложений) также влияет ,

EDIT2 Пробовал UpdateLayeredWindow() с тем же результатом.

+0

Даже если проблема довольно похожа, я не думаю, что ответы будут одинаковыми. Прежде всего, я не создаю окно самостоятельно, во-вторых, я не использую никаких растровых изображений и GDI (+). Кроме того, я попытался обмануть UpdateLayeredWindow(), но ничего не изменил (возможно, потому, что я не понимаю, как его использовать ..) –

+1

Эффекты прозрачности и прозрачности, которые вы просите, всегда будут применяться к любому ребенку окна. Единственный способ избежать этого - поставить окно верхнего уровня поверх этого родительского окна. –

+0

... Как бы это сделать в этом случае?? –

ответ

0

По http://msdn.microsoft.com/en-us/library/windows/desktop/ms633540%28v=vs.85%29.aspx

ОС Windows 8: The WS_EX_LAYERED стиль поддерживается для окон верхнего уровня и дочерних окон. Предыдущие версии Windows поддерживают WS_EX_LAYERED только для верхнего уровня окон.

Поэтому он не будет устанавливать многоуровневый атрибут в «дочерние» окна.

Показать скриншот и/или код.

+0

Добавлено изображение для уточнения. –

Смежные вопросы