Bonjour,

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) ;
avec leur implémentation:
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