[Thread]Problème d'envoie de message
Bonjour,
J'ai un petit soucis au niveau de l'utilisation d'un thread pour envoyer un message:
Tout d'abord, voici le code issu de la FAQ:
Dans le .h de ma classe CVersionDlg, je fais ceci:
Code:
1 2 3 4 5 6 7 8 9 10
| bool InitVersionThread()
{
m_pThread = AfxBeginThread(VersionThread, this);
if(!m_pThread)
{
// Impossible de créer le thread !
return false;
}
return true;
} |
Dans le .cpp de ma classe CVersionDlg, je fais ceci:
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 35 36 37 38 39
|
/*************************************************************************
*VersionThread(): Thread qui détecte le changement d'un radio button
*
*14/02/2007
**************************************************************************/
UINT CVersionDlg::VersionThread(LPVOID pvParam)
{
CVersionDlg *pThis=reinterpret_cast< CVersionDlg *>( pvParam);
int nVersionBase = -1;
while(!pThis->m_bEndVersionThread)
{
//::PostMessage(pThis->m_hWnd,WM_UPDATE_VERSION,0,0);
//Si choix différent d'une version de base
if (nVersionBase != pThis->m_nVersionBase)
{
nVersionBase = 2;
}
}
// signale l'objet event d'attente et sort du thread.
::SetEvent(pThis->m_hWaitVersionThread);
return 0;
}
/*************************************************************************
*OnReceiveUpdateVersion(): Mise à jour des variables associées au control
*
*14/02/2007
**************************************************************************/
long CVersionDlg::OnReceiveUpdateVersion(WPARAM wparam,LPARAM lparam)
{
UpdateData(TRUE);
return 0L;
} |
En principe, j'ai l'habitude de démarrer mon thread dans l'OnInitDialog() de la classe du thread et j'avais aucun soucis.
Mais dans ce cas, je démarre le thread à partir d'une autre classe qui instancie un objet de la classe CVersionDlg (classe du thread) comme ceci:
Code:
1 2 3
| // Lancement du thread pour gérer l'affichage des fenetres filles dynamiques
if(!oVersionDlg.InitVersionThread())
MessageBox("Erreur pour initialiser le thread de gestion des étapes!", "Erreur", MB_OK); |
Le problème est que je ne rentre jamais dans le message posté à l'intérieur de mon thread...
Apparemment, en mode debug, pThis->m_hWnd vaudrait NULL et je me dis que le soucis vient de là.
Comment puis je remédier à cela?
Il y a t'il un moyen de déclencher un thread au travers une instance de la classe du thread et de permettre l'envoie de message dans la classe du thread en question?
J'espère être compréhensible! :roll: ;)
Merci
Nicolas