PB capCreateCaptureWindow

Signaler
Messages postés
13
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
16 mai 2013
-
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
-
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

Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
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
Messages postés
13
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
16 mai 2013

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??
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
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