Communication entre des threads
Bonjour à tous,
Je suis entrain de développer un logiciel sous Visual Studio en C++ à base de fenêtres Dialog.
Je souhaite communiquer entre une fenêtre et un processus lancer à partir de celle-ci.
Je lance le processus de la façon suivante :
Code:
1 2 3
|
CRuntimeClass* m_pThread = RUNTIME_CLASS(TagDetectThread);
AfxBeginThread(m_pThread,THREAD_PRIORITY_NORMAL,0,0,NULL); |
TagDetectThread étant la classe qui contient le processus.
Je comptais utiliser les fonctions suivantes mais je n'arrive pas a les faire fonctionner :
PostThreadMessage
RegisterWindowMessage
ON_REGISTERED_THREAD_MESSAGE
A la suite d'un "click" sur un bouton, je veux déclencher la fin du thread.
J'utilise donc la fonction suivante :
Code:
1 2 3 4
|
DWORD ID;
ID = (ULONG)GetCurrentThreadId;
PostThreadMessage(ID,WM_QUIT,0,0); |
Dans la classe comportant mon thread, j'ajoute juste après la boite de message :
Code:
1 2
|
[i]ON_THREAD_MESSAGE(WM_QUIT,Run) // Run étant la fonction du thread |
Dans cette fonction Run, je met une fonction de détection de cette forme :
MSG msg;
Code:
1 2
|
if(GetMessage(&msg,NULL,0,0)<0) AfxMessageBox("Error"); |
Malheureusement elle ne fonctionne pas. Etant donné que je débute en MFC - C++, je ne comprends pas pourquoi celà ne marche pas ?
Ais-je oublié quelque chose ? Y a-t-il quelque chose de mal défini ?
Merci beaucoup pour votre aide.
utilise la balise code, Merci Farscape