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.

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();
        }
        ...
}
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
void LPMainFrame::OnRangeClickButton(UINT nID)
{   
        switch (nID)
        {
        case IDC_SERVICE:
                InfosApplication* infosApplication = LPControl::getInstance()->getModele()->getInfosApplication(indexService);
                LPControl::getInstance()->useService(infosApplication);
                setEtatMenu(MINIMISE);
                break;
        ...
        }
}
En revanche, lorsqu'elle est appelée par un thread, la méthode setEtatMenu(...) est totalement inopérante.
Le thread est créé par la méthode CreateThread(...).

Je pense avoir donné les informations essentielles.