Ma fenêtre veut pas s'ouvrir... (MFC)

Résolu
Taurnil Messages postés 48 Date d'inscription vendredi 8 décembre 2000 Statut Membre Dernière intervention 2 juillet 2009 - 24 avril 2008 à 15:29
Taurnil Messages postés 48 Date d'inscription vendredi 8 décembre 2000 Statut Membre Dernière intervention 2 juillet 2009 - 21 mai 2008 à 12:44
Bonjour à tous, je suis actuellement sur un projet qui vise à piloter le port série à l'aide d'une petite interface utilisateur.
Cette interface est réalisée à l'aide de la MFC de Visual C++ (je travaille avec la version 6.0).

J'en arrive à mon problème :

Dans mon programme (qui est en fait un temporisateur), je dois vérifier l'heure de l'horloge et si celle-ci est égale à l'heure rentrée par l'utilisateur dans la fenêtre, on envoie un "1" sur une des broches de mon port COM.
Je teste donc l'heure en continu avec ce bout de programme :

code :
<hr size="2" width="100%" />
while (true) {
        curTime = CTime::GetCurrentTime();
        heure = curTime.GetHour(); //séparation heures-minutes
        minute = curTime.GetMinute();
                if (heure m_heurefermeture && minute m_minutefermeture) {            
          // Mise à 0 DTR
  EscapeCommFunction(g_hCOM, CLRDTR);
 PurgeComm(g_hCOM, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
        UpdateData(TRUE);
        } else if (heure m_heureouverture && minute m_minuteouverture) {
         //Mise à 1 DTR    
     PurgeComm(g_hCOM, PURGE_TXCLEAR|PURGE_RXCLEAR|PURGE_TXABORT|PURGE_RXABORT);
    EscapeCommFunction(g_hCOM, SETDTR);       
        }
        m_heure = heure;        //affichage pour test            
        m_minute = minute;
        UpdateData(FALSE);
        Sleep(30000);}
    return TRUE;  // return TRUE  unless you set the focus to a control
}
<hr size="2" width="100%" />Vous l'avez donc compris, la boucle se répète en continu toutes les 30 secondes.

Mais le problème est là : J'ai l'impression que mon programme essaie de finir la boucle avant d'ouvrir ma fenêtre alors que celle-ci ne se termine jamais.

Je sais pas comment faire, j'ai entendu parler de threads mais c'est encore un peu compliqué pour moi.

Si quelqu'un trouve quelquechose d'autre, qu'il n'hésite pas. Sinon, un lien vers un tuto sur les threads serait le bienvenu (en français si c'est possible).

A tous merci d'avance, si quelqu'un arrive à me sortir de là, je lui en serais (vraiment très reconnaissant).

22 réponses

Taurnil Messages postés 48 Date d'inscription vendredi 8 décembre 2000 Statut Membre Dernière intervention 2 juillet 2009
21 mai 2008 à 11:50
J'ai le même problème evidemment pour m_heure et m_minute, en fait, si vous regardez bien, je les avais declarée à l'interieur de ma fonction alors que ce sont des variables membres de CFenetre1Dlg.
J'ai donc retiré la déclaration au début de ma fonction et voilà l'erreur que j'ai à la compilation :

error C2597: illegal reference to data member 'CFenetre1Dlg::m_heure' in a static member function.

Comment je fais pour que ma fonction reçoive les variables m_heure et m_minute directement du main ?

J'ai essayé comme ça mais je me doutais que ça ne marcherait pas :

    void* __cdecl CFenetre1Dlg::boucle(void *pFenetre1Dlg,int m_heure,int m_minute)

Des idées?
0
Taurnil Messages postés 48 Date d'inscription vendredi 8 décembre 2000 Statut Membre Dernière intervention 2 juillet 2009
21 mai 2008 à 12:44
CA MARCHE !!!

Honnetement, je sais pas comment te remercier, merci pour toute l'aide que tu m'as apporté.

Merci merci merci.
0
Rejoignez-nous