MFC - Minuterie

?>

UNE timerest un objet non spatial qui utilise des intervalles de temps récurrents depuis un ordinateur ou depuis votre application. Pour fonctionner, à chaque intervalle de temps, le contrôle envoie un message au système d'exploitation. Contrairement à la plupart des autres contrôles, le minuteur MFC n'a ni un bouton pour le représenter ni une classe. Pour créer une minuterie, vous appelez simplement la méthode CWnd :: SetTimer (). Cet appel de fonction crée un minuteur pour votre application. Comme les autres commandes, une minuterie utilise un identifiant.

Créons une nouvelle application basée sur une boîte de dialogue MFC.

Step 1 - Supprimez la légende et définissez son ID sur IDC_STATIC_TXT

Step 2 - Ajoutez la variable de valeur pour le contrôle de texte.

Step 3 - Accédez à la vue de classe dans la solution.

Step 4 - Cliquez sur la classe CMFCTimeDlg.

Step 5 - Dans la fenêtre Propriétés, cliquez sur le bouton Messages.

Step 6- Cliquez sur le champ WM_TIMER et cliquez sur la flèche de sa liste déroulante. Sélectionner OnTimer et implémentez l'événement.

void CMFCTimerDlg::OnTimer(UINT_PTR nIDEvent) { 
   // TODO: Add your message handler code here and/or call default 
   CTime CurrentTime = CTime::GetCurrentTime();  
	
   int iHours = CurrentTime.GetHour(); 
   int iMinutes = CurrentTime.GetMinute(); 
   int iSeconds = CurrentTime.GetSecond(); 
   CString strHours, strMinutes, strSeconds;  
 
   if (iHours < 10) 
      strHours.Format(_T("0%d"), iHours); 
   else 
      strHours.Format(_T("%d"), iHours);  
 
   if (iMinutes < 10) 
      strMinutes.Format(_T("0%d"), iMinutes); 
   else 
      strMinutes.Format(_T("%d"), iMinutes);  
   
   if (iSeconds < 10) 
      strSeconds.Format(_T("0%d"), iSeconds); 
   else 
      strSeconds.Format(_T("%d"), iSeconds);  
 
   m_strTimer.Format(_T("%s:%s:%s"), strHours, strMinutes, strSeconds); 
   
   UpdateData(FALSE); 
   CDialogEx::OnTimer(nIDEvent); 
}

Step 7 - Lorsque le code ci-dessus est compilé et exécuté, vous verrez la sortie suivante.