PB capCreateCaptureWindow

al1cplusplus Messages postés 13 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 16 mai 2013 - 14 mars 2013 à 17:34
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 - 15 mars 2013 à 12:52
Bonjour à tous,

Voila je souhaite lancer capCreateCaptureWindow dans une fenêtre Windows.
J'ai créé mes MFC et une boite de dialogue à l'aide de l'outil graphique.

Sur clic de bouton Je choppe le handle de la fenêtre grâce à HWND hWnd=(HWND)GetActiveWindow();
Après création du Thread de traitement
Je lance HWND hWnd_0 = capCreateCaptureWindow((LPCWSTR)L"handle", WS_CHILD | WS_VISIBLE, 0, 0, largeur, hauteur, hWnd, 1);

Le problème est que hWnd_0 vaut 0 et que avec une erreur "Invalid window handle"

Des idées? Des solutions? Faut il absolument crée les boites via un CreateWindow?

Merci par avance pour vos réponses!

3 réponses

cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
15 mars 2013 à 10:09
Je ne sais pas quand tu effectues ton code dans l'application, la fenêtre n'est sûrement pas créée.
Je pense qu'il faut que tu mettes ton code dans la procedure OnInitDialog de ta classe dialog, quand la fenêtre est créé. et là le handle tu peux le prendre par GetSafeWnd()


louis
0
al1cplusplus Messages postés 13 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 16 mai 2013
15 mars 2013 à 12:16
Merci pour ta réponse.
J'ai dejà essayé la valeur hWnd=(HWND)GetActiveWindow() est égale hWnd=(HWND)GetSafeWnd() au moment de mon appel.

par contre je créé ensuite un thread de traitement du coup :
1> je me demande si je ne perd pas le contexte
2> capCreateCaptureWindow ne supporte peu ^^etre pas ca
3> WS_CHILD | WS_VISIBLE ??? Les param sont il ok?? car c'est une boite de dialog??
0
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
15 mars 2013 à 12:52
Bonjour,

Ton projet est en UNICODE?
Quel handle de fenêtre tu utilises? la boite de dialogue ou un static dans la boite de dialogue?

le dernier paramètre ID n'est-il pas utilisé par un autre contrôle ( verifie dans ressource.h)

effectivement les rapports thread et UI thread peuvent ne pas être compatibles. le mieux c'est de récupérer le frame, de faire le traitement et ensuite de l'afficher.
voilà quelques liens qui peuvent t'aider:
http://www.codeproject.com/Articles/7882/Easy-Digital-Camera-Connection
http://www.codeproject.com/Articles/20519/Webcamera-Multithreading-and-VFW
http://www.codeproject.com/Articles/133/CAviCap-and-CFrameGrabber-wrappers-for-AVICap-Wind

Bon codage
louis
0
Rejoignez-nous