Bonjour,
La fenêtre de mon application (LPMainFrame héritant de CFrameWnd) possède une méthode setEtatMenu(...) qui modifie la visibilité des contrôles de cette fenêtre.
Cette méthode fonctionne parfaitement lorsqu'elle est appelée suite à la détection d'un clic souris sur l'un des contrôles :
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 void LPMainFrame::setEtatMenu(EtatMenu nouvelEtat) { etatMenu = nouvelEtat; if (etatMenu == MAXIMISE) { Invalidate(); // Redessine le fond du menu m_precButton.ShowWindow(SW_SHOW); // Rend tout visible m_suivButton.ShowWindow(SW_SHOW); m_serviceButton.ShowWindow(SW_SHOW); m_labelService.ShowWindow(SW_SHOW); m_tousLesServicesButton.RefreshBkgrnd(); // Raffraîchi les autres boutons m_servicesLancesButton.RefreshBkgrnd(); if (LPControl::getInstance()->getModele()->getNbServicesExec() == 0) m_servicesLancesButton.EnableWindow(false); else m_servicesLancesButton.EnableWindow(true); m_quitterButton.RefreshBkgrnd(); } ... }
En revanche, lorsqu'elle est appelée par un thread, la méthode setEtatMenu(...) est totalement inopérante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 void LPMainFrame::OnRangeClickButton(UINT nID) { switch (nID) { case IDC_SERVICE: InfosApplication* infosApplication = LPControl::getInstance()->getModele()->getInfosApplication(indexService); LPControl::getInstance()->useService(infosApplication); setEtatMenu(MINIMISE); break; ... } }
Le thread est créé par la méthode CreateThread(...).
Je pense avoir donné les informations essentielles.
Partager