准備工作:
1、在視圖中右擊->類向導->消息->找到消息WM_TIMER,同事右側會出現消息的響應函數OnTimer,雙擊OnTimer
一、標題欄顯示系統時間
1、在BOOL XXXDlg::OnInitDialog()函數中添加定時器SetTimer(1,1000,NULL);//第一個參數是定時器ID,你隨意定,但是如果不能喝其他定時器的ID重復,第二個參數是時間(ms)就是每隔多長時間執行一次,第三個參數一般為NULL,為NULL是表示使用OnTimer為響應函數,當然你也可以自己定義一個響應函數
2、在OnTimer中添加代碼,獲取系統時間。(例子在下面)
CTime cTime = CTime::GetCurrentTime();
CString strTime; //字符串格式化時間
strTime = cTime.Format("現在是%Y年%m月%d日 %X");
SetWindowText(strTime);
二、在Edit編輯框中顯示系統時間
1、從工具箱中拖拽一個Edit控件放在視圖上
2、右擊Edit控件選擇添加變量(我的是m_strTimeTest),然后確定即可
三、一和二的示例如下:
1 BOOL CMFCTestDlg::OnInitDialog() 2 { 3 CDialogEx::OnInitDialog(); 4 5 SetTimer(0,1000,NULL);//設置定時器顯示時間顯示到標題欄 6 SetTimer(1,1000,NULL);//顯示在EDIT編輯框中 7 // 將“關於...”菜單項添加到系統菜單中。 8 9 // IDM_ABOUTBOX 必須在系統命令范圍內。 10 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); 11 ASSERT(IDM_ABOUTBOX < 0xF000); 12 13 CMenu* pSysMenu = GetSystemMenu(FALSE); 14 if (pSysMenu != NULL) 15 { 16 BOOL bNameValid; 17 CString strAboutMenu; 18 bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); 19 ASSERT(bNameValid); 20 if (!strAboutMenu.IsEmpty()) 21 { 22 pSysMenu->AppendMenu(MF_SEPARATOR); 23 pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); 24 } 25 } 26 27 // 設置此對話框的圖標。當應用程序主窗口不是對話框時,框架將自動 28 // 執行此操作 29 SetIcon(m_hIcon, TRUE); // 設置大圖標 30 SetIcon(m_hIcon, FALSE); // 設置小圖標 31 32 // TODO: 在此添加額外的初始化代碼 33 34 35 return TRUE; // 除非將焦點設置到控件,否則返回 TRUE,不過這個一般都不會更改 36 }
時間響應函數
1 void CMFCTestDlg::OnTimer(UINT_PTR nIDEvent) 2 { 3 // TODO: 在此添加消息處理程序代碼和/或調用默認值 4 5 switch (nIDEvent) 6 { 7 case 0: 8 { 9 //標題欄顯示系統時間 10 CTime cTime = CTime::GetCurrentTime(); 11 CString strTime; //字符串格式化時間 12 strTime = cTime.Format("現在是%Y年%m月%d日 %X"); 13 SetWindowText(strTime); 14 } 15 break; 16 case 1: 17 { 18 //對話框顯示系統時間 19 CTime cTime = CTime::GetCurrentTime(); 20 CString strTime; //字符串格式化時間 21 strTime = cTime.Format("%Y-%m-%d %X"); 22 m_strTimeTest.SetWindowTextW(strTime); 23 } 24 break ; 25 default: 26 break; 27 } 28 CDialogEx::OnTimer(nIDEvent); 29 }