Bonjour à tous!
Je pensais trouver la solutio en cherchant sur le net, mais ca fait une heure que je tourne en rond alors je me lance...
En fait, je veux faire un truc tout bete: un thread qui recupere des données d'une camera.
Pour cela j'ai créé la classe CMaClasse qui en gros ressemble à ca:
Dans ma fonction StartCamera(), je lance le thread:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class CMaClasse { public: CMaClasse(void); ~CMaClasse(void); CCamera Camera; //classe qui gère la caméra void StartCamera(); static UINT MyThread(LPVOID pvParam) }
Puis je definie ce que je veux faire dans mon thread (je veux pouvoir mettre les donnees RGB da mon image dans "Image":
Code : Sélectionner tout - Visualiser dans une fenêtre à part AfxBeginThread(DisplayCam, this );
C'est la fonction GetDIB de ma classe CCamera qui devrait faire la travail de stockage des donnees dans la "Image". Or, ce n'est pas la cas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 UINT CCamera::DisplayCam(LPVOID pvParam) { CMaClasse *pThis = reinterpret_cast<CMaClasse *>(pvParam); unsigned char *pImage = new unsigned char[CAMERA_WIDTH*CAMERA_HEIGHT*3]; while (pThis->m_showCamera) { Camera.GetDIB(pImage) } return 0; }
- il dit ne pas connaitre "Camera" et donc impossible de jouer avec la fonction GetDIB.
Pourquoi ne reconnait-il pas la "Camera" alors que je la declare dans CMaClasse ? Est-ce que ca a à voir avec le fait que mon thread est déclaré static ?
J'ai bien fais les include, donc le probleme ne se situe pas la... (je peux par exemple utiliser l'objet "Camera" sans probleme dans StartCamera() !
Partager