Boucle message dans un thread
Bonjour,
Code:
1 2 3 4 5 6 7
|
dans une classe jai :
int runMainLoop() ;
et
static DWORD WINAPI ThreadProc(LPVOID lpParam) ; |
avec leur impl�mentation:
Code:
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