MFC Envoyer un message à thread principal (plutôt qu’une fenêtre)?

J’écris une application graphique pour Windows utilisant MFC et C ++.

J’ai donc besoin d’envoyer des messages à mon thread principal depuis mon thread de travail pour lui dire de mettre à jour mon interface graphique. Cependant, je ne sais pas comment envoyer un message au thread principal principal plutôt qu’à une fenêtre. Comme c’est le cas, je peux voir que c’est dans le fil MAIN quand il reçoit le message, mais je ne suis pas sûr que cela soit garanti ou simplement de la chance.

En travailleur:

PostMessage( *myTestToolDlg, WM_YOU_HAVE_DATA,UPDATE_GUI, 0 ); 

Dans la fenêtre d’application:

 LRESULT CTestToolDlg::OnData(WPARAM wp, LPARAM ) 

Cela signifie-t-il cela?

Vous pouvez obtenir l’ID de thread de votre fil principal en utilisant quelque chose comme threadId = GetCurrentThreadId(); dans le thread principal , puis envoyez-lui un message en appelant PostThreadMessage(threadId, ...) partir de votre thread de travail .

Cependant, comme Hans Passant a dit -> ici <-, vous devriez éviter d'utiliser PostThreadMessage pour envoyer des messages aux threads d’interface utilisateur et mieux envoyer des messages vers sa fenêtre.