Je voudrais mettre la boucle des messages dans un thread a part. Je precise tout de suite que je ne suis pas du tout un expert en threads

Je voudrais avoir un code comme ceci :

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
int main ()
{
  /* message loop */
  while ((ret = GetMessage (&msg, NULL, 0, 0))) {
    /* translate and dispatch */
  }

  /* creation de plusieurs fenetres */
  w1 = CreateWindow (***);
  w2 = CreateWindow (***);

  ShowWindow (w1);
  ShowWindow (w2);

  /* main loop */
  while (1) { *** }

  return 0;
}
Evidement, la boucle des message bloque tout et je dois l'executer dans un autre thread. Notez que la main loop doit rester telle quelle. En particulier, je ne dois pas la placer dans un thread.

Donc, j'ai essaye ce code:

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
void message_loop (void *data)
{
  MSG msg;

  while ((ret = GetMessage (&msg, NULL, 0, 0))) {
    /* translate and dispatch */
  }
}
int main ()
{
  MSG msg;

  /* message loop */
  _beginthread(message_loop, 0, NULL);

  /* creation de plusieurs fenetres */
  w1 = CreateWindow (***);
  w2 = CreateWindow (***);

  ShowWindow (w1);
  ShowWindow (w2);

  /* main loop */
  while (1) { *** }

  return 0;
}
Le resultat est que mes fenetres sont bloquees vu qu'elles n'ont pas ete creees dans le meme thread de GetMessage (si j'ai bien compris la doc).

Que faut-il que je fasse pour creer mes fenetres dans le meme thread que GetMessage ?

merci