2010-02-10 14 views
1

Comment créer une fenêtre transparente qui peut être placée au-dessus d'une autre fenêtre dans laquelle la vidéo en continu est dessinée. Je veux créer une fenêtre au-dessus de la fenêtre vidéo sur laquelle je peux dessiner sans que la vidéo ne revienne constamment dessus.Avez-vous besoin d'une fenêtre de superposition transparente pour tracer des lignes au-dessus de la fenêtre de dessin de la vidéo? :: MFC, C++, windows ::

Je peux créer une fenêtre à partir d'une ressource de boîte de dialogue transparente et définir son ordre en utilisant SetWindowPos (...) mais cela ne semble pas avoir d'effet. Avoir le jeu de dialogue comme style WS_CHILD ou WS_POPUP semble également n'avoir aucun effet. J'utilise un cadre de support (vidéo) un autre groupe de développement développé dans mon entreprise et fournit un handle de fenêtre à ce code. Ce handle est utilisé par leur plugin de rendu dans le pipeline qui utilise Direct3d pour le rendu de la vidéo sur cette surface de la fenêtre.

Répondre

1

La vidéo est rendue à une superposition matérielle dans la carte vidéo. Vous devrez créer le vôtre pour superposer cette superposition. Je pense que DirectX fournit cette fonctionnalité, vous pouvez également l'obtenir en utilisant le style de fenêtre WS_EX_LAYERED et le SetLayeredWindowAttributes(). Ce dont vous aurez besoin pour définir la clé de transparence. Pas si sûr que c'est un slam-dunk btw, j'ai vu cela se comporter bizarrement.

+0

J'ai travaillé avec la propriété WS_EX_LAYERED avec la touche coloris hier avant de vous connecter pour voir la réponse que vous avez donnée. Puisque la fenêtre ne peut pas être un style WS_CHILD avec WS_EX_LAYERED, il y a une certaine bizarrerie pour la gestion de la fenêtre de superposition. En ce moment je regarde dans cette étrangeté pour essayer de l'éviter. -Merci pour la réponse si. – flawlesslyfaulted