Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question//***************************************************************************** // TestTimerDlg.h : // //***************************************************************************** #ifndef AFX_TESTTIMERDLG_H_INCLUDED_ #define AFX_TESTTIMERDLG_H_INCLUDED_ //***************************************************************************** // Classe CTestTimerDlg. //***************************************************************************** class CTestTimerDlg : public CDialog { //============================================================================= // Membres privés. //============================================================================= private : // police de caractères pour l'affichage CFont m_Font; // début du chrono DWORD m_dwStartTime; //============================================================================= // Méthodes publiques. //============================================================================= public : // constructeur CTestTimerDlg(CWnd* pParent = NULL); //============================================================================= // Données de la boîte de dialogue. //============================================================================= //{{AFX_DATA(CTestTimerDlg) enum { IDD = IDD_TESTTIMER }; CButton m_BtnStop; CButton m_BtnStart; CStatic m_StcTimer; //}}AFX_DATA //============================================================================= // Méthodes virtuelles redéfinies. //============================================================================= //{{AFX_VIRTUAL(CTestTimerDlg) protected : virtual void DoDataExchange(CDataExchange* pDX); //}}AFX_VIRTUAL //============================================================================= // Traitement des messages. //============================================================================= protected : //{{AFX_MSG(CTestTimerDlg) virtual BOOL OnInitDialog(); afx_msg void OnBtnStart(); afx_msg void OnBtnStop(); afx_msg void OnTimer(UINT nIDEvent); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; #endif // AFX_TESTTIMERDLG_H_INCLUDED_
//***************************************************************************** // TestTimerDlg.cpp : // //***************************************************************************** #include "StdAfx.h" #include "TestTimer.h" #include "TestTimerDlg.h" //============================================================================= // Table des messages. //============================================================================= BEGIN_MESSAGE_MAP(CTestTimerDlg, CDialog) //{{AFX_MSG_MAP(CTestTimerDlg) ON_BN_CLICKED(IDC_BTN_START, OnBtnStart) ON_BN_CLICKED(IDC_BTN_STOP, OnBtnStop) ON_WM_TIMER() //}}AFX_MSG_MAP END_MESSAGE_MAP() //***************************************************************************** // Constructeur //***************************************************************************** CTestTimerDlg::CTestTimerDlg(CWnd* pParent) : CDialog(CTestTimerDlg::IDD, pParent) { //{{AFX_DATA_INIT(CTestTimerDlg) //}}AFX_DATA_INIT } //***************************************************************************** //***************************************************************************** void CTestTimerDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CTestTimerDlg) DDX_Control(pDX, IDC_BTN_STOP, m_BtnStop); DDX_Control(pDX, IDC_BTN_START, m_BtnStart); DDX_Control(pDX, IDC_STC_TIMER, m_StcTimer); //}}AFX_DATA_MAP } //***************************************************************************** // OnInitDialog : //***************************************************************************** BOOL CTestTimerDlg::OnInitDialog() { // appel fonction de la classe de base CDialog::OnInitDialog(); // chargement et affectation icone (grande et petite) HICON hIcon = LoadIcon(::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_APPICON)); SetIcon(hIcon, TRUE); SetIcon(hIcon, FALSE); // état des boutons m_BtnStart.EnableWindow(TRUE); m_BtnStop.EnableWindow(FALSE); m_BtnStart.SetFocus(); // création police de caractère et affectation CFont* pCurFont = m_StcTimer.GetFont(); LOGFONT lg; pCurFont->GetLogFont(&lg); lg.lfHeight = -40; lg.lfWeight = FW_BOLD; m_Font.CreateFontIndirect(&lg); m_StcTimer.SetFont(&m_Font); // retour return TRUE; } //***************************************************************************** // OnBtnStart : //***************************************************************************** void CTestTimerDlg::OnBtnStart() { // création timer SetTimer(0x100, 100, NULL); m_dwStartTime = GetTickCount(); m_StcTimer.SetWindowText(_T("0")); // état des boutons m_BtnStart.EnableWindow(FALSE); m_BtnStop.EnableWindow(TRUE); m_BtnStop.SetFocus(); } //***************************************************************************** // OnBtnStop : //***************************************************************************** void CTestTimerDlg::OnBtnStop() { // destruction timer KillTimer(0x100); // état des boutons m_BtnStart.EnableWindow(TRUE); m_BtnStop.EnableWindow(FALSE); m_BtnStart.SetFocus(); } //***************************************************************************** // OnTimer : //***************************************************************************** void CTestTimerDlg::OnTimer(UINT nIDEvent) { // mise à jour du chrono TCHAR szText[16]; itoa((GetTickCount()-m_dwStartTime)/1000, szText, 10); m_StcTimer.SetWindowText(szText); }