Superposition et Layering pour une application MFC

Superposition et Layering pour une application MFC - C++ - Programmation

Marsh Posté le 01-04-2004 à 21:44:08    

Salut,
Voila je dois coder une application qui analyse une video et dessine des carres  
dans les 4 coins de la video.Or, je pourrais affecter directement la video pour afficher mes carres mais ce serait franchement nul.
Ma question est simple comment afficher "des choses" au dessus de la video qui tourne avec des MFC.
Un peu comme dans les players video style bsplayer qui affiche une barre pour le volume au dessus de la video en vert?
Merci
PS:l'affichage doit etre relatif bien sur: si je bouge mon appli les carres doivent suivre.

Reply

Marsh Posté le 01-04-2004 à 21:44:08   

Reply

Marsh Posté le 05-04-2004 à 11:40:19    

Récupère un pointeur sur la fenêtre qui affiche la vidéo et ensuite le DC associé à cette fenêtre, une fois le DC connu, ca devient simple de mettre ce que tu veux dedans (textes, carrés...)
 
Pour récupérer un pointeur sur la fenêtre il y a plusieurs méthodes:
 
Récupérer un CWnd * au moment ou tu crées le contrôle qui affiche la vidéo dans ton application, sinon, le récupérer plus tard à l'aide de fonctions du style GetCtrlById() (moins fiable)
 
Une fois le pointeur obtenu, tu peux le caster et récupérer facilement un DC valide pour te servir des fonctions classiques de dessin... (GetDC() par exemple)
 
Si l'affichage de la vidéo est effectué par une autre application que la tienne alors je ferais comme ca:
 
Je récupèrerais un pointeur sur la fenêtre qui affiche la vidéo et ensuite le DC associé à cette fenêtre, une fois le DC connu, ca devient simple de mettre ce que tu veux dedans (textes, carrés...)
 
Pour récupérer un pointeur sur la fenêtre il y a plusieurs méthodes:
 
- Récupérer le pointeur grace à la position de la fenetre (pas toujours pratique): WindowFrompoint(CPoint &pt) si je me souviens bien...,
 
- Récupérer un pointeur sur le thread qui gère la fenêtre grâce au nom de l'application / de la fenêtre principale, ensuite depuis ce pointeur récupérer un pointeur sur la fenêtre...
 
-> pour faire cela il y a plusieurs possibilités (dont une qui permet de récupérer le pointeur grace au nom de l'application mais je ne me rappelle plus de la méthode, elle doit faire partie du platform SDK cependant), sinon tu peux toujours utiliser des fonctions d'énumérations de process et filtrer selon le nom des process... (comme ca vite fait: Process32First(), Process32Next()...) ensuite tu appelles une méthode genre GetMainWnd() de ton thread et c'est gagné...
 
Une fois le pointeur sur la fenêtre obtenue, des fonctions du style de getDC() te permettront d'obtenir un contexte valide et de dessiner facilement ce que tu veux dedans...
 
Ce ne sont juste que des idées, je ne me rappelle plus exactement le nom de méthodes et des classes dont dépendent ces méthodes, mais cette technique marche à coups sur (il y a des dizaines de facons et de classes / méthodes pour faire la même chose...)


---------------
- Pierre Baudelet -
Reply

Marsh Posté le 06-04-2004 à 16:03:40    

Merci Beaucoup, je vais essayer

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed