Bonjour,
avec leur impl�mentation:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7 dans une classe jai : int runMainLoop() ; et static DWORD WINAPI ThreadProc(LPVOID lpParam) ;
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 //run the main loop int MyClass::runMainLoop() { //start thread and get the handle m_hThread = CreateThread(NULL, NULL, ThreadProc, NULL, NULL, NULL) ; //wait thread end WaitForSingleObject(m_hThread, INFINITE) ; return 0 ; } et DWORD WINAPI MyClass::ThreadProc(LPVOID lpParam) { MSG msg={0} ; // Main message loop while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg) ; DispatchMessage(&msg) ; } //return (int)msg.wParam ; TODO return 0 ; }
Le contexte est que, apr�s avoir cr�e une fenetre (voir un d�s posts pr�c�dent ), je souhait mettre cette boucle de r�partition des messages dans un thread afin de lib�rer la ressource processeur.
Je sais que s'il n'y a pas de messages, GetMessage justement lib�re la ressource processeur. Cependant ma fenetre est actualis� tr�s souvent (30 fps) car elle sert � visualiser ce que recoit la carte tv.
Le probl�me est que du coup si j'ai une tache qui s'effectue en parrall�le, (un autre thread cr�e dans le WinMain par exemple) elle n'obtient jamais la ressource processeur.
D'o� lid�e de mettre cette boucle de traitement des messages dans un thread, puis rajouter quelques Sleep.
Cest la que le pb surgit, lorsque je fais appel � myclass.runMainLoop(), le wait est bloquant est je ne peux alors plus cliquer sur la fenetre (sabli�)
Quelqu'un peut il m'�clairer ?
merci
Partager