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:
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: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:
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() !