Rendre la main à l'ordi dans un while...

cs_Crepuscule3 Messages postés 24 Date d'inscription samedi 13 octobre 2007 Statut Membre Dernière intervention 25 novembre 2008 - 28 déc. 2007 à 18:23
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 28 déc. 2007 à 23:14
Bonjour à tous,

   je travaille sur un projet en C++ mettant en oeuvre du traitement vidéo. Je suis actuellement confronté à un problème et je ne connait pas les commandes qui me permettrait de réaliser ma tache.
   J'ai une fonction qui permet de prendre une image du flux vidéo. Cependant je souhaiterais prendre une image à cuaque fois qu'une nouvelle image dans le flux vidéo est générée. A la base, je pensais pouvoir me dépatouiller avec un simple while (faire en boucle mon acquisition d'une image) mais cela ne va pas, il m'est nécéssaire à tout prix de rendre la main à l'ordinateur (pour voir s'il n'y a pas d'autre ordre dans la pile) à la fin de chaque fin de boucle while.
   Quelqu'un m'a mit sur la piste d'un "field" (il me semble que c'était la commande là) mais ça n'a pas l'air d'être la bonne commande.

Quelqu'un connaitrait-il un moyen d'effetuer cette action?

Cordialement

Crepuscule3

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 déc. 2007 à 18:41
Je te rassure, l'OS a TOUJOURS la main, au pire il virera ton prog.

Bien entendu tu peux faire de PeekMessage et traiter comme dans VB (DoEvents) mais ce n'est pas viable de coder ainsi, faut laisser ces pratiques aux interprétés. Un code correct fait les opérations lourdes dans un thread dédié, le thread principal continuant à dispatcher les messages système.

ciao...
BruNews, MVP VC++
0
cs_Crepuscule3 Messages postés 24 Date d'inscription samedi 13 octobre 2007 Statut Membre Dernière intervention 25 novembre 2008
28 déc. 2007 à 22:27
Bonjour,

   mon problème est que je possède plusieurs fonctions. Au final, mon programme génère une fenêtre Windows dans laquelle je peux cliquer sur différents boutons ("play" pour visionner le flux vidéo de ma caméra, "stop", "snapshot" pour faire une capture d'écran...). Quand je clique sur "play" je fais appel à une fonction nommée "OnPlayLive" dans laquelle je lis le flux vidéo. Dans cette même fonction, j'y ai ajouté mon algo pour prendre une image dans le flux vidéo. Mais si je mets un while, je suis obligé de rester dans cette fonction et je ne peux plus accéder aux autres. Par ailleurs, un while me fait planter mon prog. C'est pour cela que je souhaite trouver quelque chose qui rend la main à l'ordi pour vérifier qu'il n'y a pas eu d'autres clics sur les autres boutons.

Merci.

Cordialement

Crepuscule3 
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 déc. 2007 à 23:14
C'est pas que je veuille insister mais cesse de répéter que tu veux rendre la main à l'ordi. Je répète l'OS a TOUJOURS la amin et sur TOUT, c'est à TON thread principal que tu dois laisser la main.
Les mots ont leur importance si on ne veut pas s'embarquer dans de faux concepts.

D'après ce que tu expliques c'est l'architecture de ton prog qui est à reconstruire. Jamais ton thread principal ne doit être embarqué dans un while, IL FAUT ABSOLUMENT un thread séparé pour le traitement video.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous