Требуется прозрачное оверлейное окно, чтобы рисовать линии поверх окна для рисования видео? :: MFC, C ++, windows ::

Как создать прозрачное окно, которое можно разместить поверх другого окна, в котором активно отображается потоковое видео. Я хочу создать окно поверх видеоокна, в котором я могу рисовать без постоянного отрисовки видео.

Я могу создать окно из прозрачного диалогового ресурса и установить его z-порядок с помощью SetWindowPos (...), но, похоже, это не имеет никакого эффекта. Установление диалогового окна в стиле WS_CHILD или WS_POPUP также не имеет никакого эффекта.

Я использую среду мультимедиа (видео), разработанную другой группой разработчиков в моей компании, и предоставляю дескриптор окна для этого кода. Этот дескриптор используется их плагином рендеринга в конвейере, который использует Direct3d для рендеринга видео на этой поверхности окна.


person flawlesslyfaulted    schedule 10.02.2010    source источник


Ответы (1)


Видео отображается на аппаратном оверлее в видеоадаптере. Вам нужно будет создать свой собственный, чтобы наложить этот оверлей. Я думаю, что DirectX предоставляет эту возможность, вы также можете получить ее, используя стиль окна WS_EX_LAYERED и SetLayeredWindowAttributes (). Что вам нужно будет установить ключ прозрачности. Не уверен, что это бестактный данк, я видел, как это ведет себя странно.

person Hans Passant    schedule 10.02.2010
comment
Получил это вчера, используя свойство WS_EX_LAYERED с colorkey, прежде чем проверять, чтобы увидеть ответ, который вы дали. Поскольку окно не может быть стилем WS_CHILD с WS_EX_LAYERED, есть некоторая странность для управления окном наложения. В данный момент я смотрю на эту странность, чтобы попытаться ее избежать. -Спасибо за ответ. - person flawlesslyfaulted; 12.02.2010