У меня есть элемент управления ActiveX, который содержит одно окно, на которое нарисовано потоковое видео. У меня есть отдельный диалог, который я создаю в другом окне, которое я сделал прозрачным или полупрозрачным по-разному (например, используя SetLayeredWindowAttributes (...) вместе со свойством Layered [для альфа-смешивания] диалога или установки прозрачного имущество).Как получить прозрачное диалоговое окно окна и примитивы рисования, чтобы оставаться поверх окна, которое создает потоковое видео?
Кроме того, я попытался использовать различные методы, чтобы попытаться заставить окно для диалога всегда рисовать поверх потокового видео окна, но никто не работал для меня. Если у меня есть кнопка в диалоговом окне или нарисована на прозрачной поверхности с помощью вызовов LineTo (...), они не остаются на вершине видео. Я попытался использовать SetWindowPos, чтобы повлиять на z-порядок двух окон, а также попытался изменить свойства диалогового окна, такие как «TopMost», но безрезультатно.
Кто-нибудь пытался сделать что-то подобное для наложенного окна поверх потокового видео и получил z-порядок для работы при рисовании переднего окна всегда после потокового видео?
UPDATE: 02/10/10 - попытался использовать свойство WS_EX_LAYERED с помощью SetLayeredWindowAttributes (...) с использованием LWA_COLORKEY и достиг того, что я искал. Поскольку многоуровневое свойство не может использоваться со стилем WS_CHILD, это решение приносит с собой некоторое необходимое управление оверлейным окном по отношению к окну с видео. Кроме того, есть некоторые другие странности, которые я пытаюсь устранить. Например, когда окно управления ActiveX с видео встроено в вкладку IE, и я переключусь на другие элементы управления вкладками в окне оверлея, оставайтесь наверху новой вкладки (когда используется стиль WS_POPUP). Тем не менее, выясняется, будут ли альтернативные способы решения этой проблемы, а затем определить переключатель и скрыть видимость окна.
Я использую среду мультимедиа (видео), другая группа разработчиков в моей компании разработана и предоставляет дескриптор окна для этого кода. Этот дескриптор используется их плагином рендеринга в конвейере, который использует Direct3d для рендеринга видео. У членов их пользовательского интерфейса есть другие приложения со слоем, постоянно находящимся поверх видео, но они используют QT (кросс-платформенное приложение и интерфейс пользовательского интерфейса). Они указали, что используют Qt :: FramelessWindowHint, который создает окно без полей, которое всегда остается поверх z-порядка. Если это можно сделать в Qt, это должно быть возможно в VC++. – flawlesslyfaulted
Это не аппаратное наложение, вы можете игнорировать этот комментарий. –