MFC显示系统时间

Posted 冥天笑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC显示系统时间相关的知识,希望对你有一定的参考价值。

准备工作:

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 }

 

以上是关于MFC显示系统时间的主要内容,如果未能解决你的问题,请参考以下文章

MFC:击键后对话框不显示

c++ mfc 代码

请在 MFC 中发布任何线程示例?

Mfc 功能包 CMFCOutlookBar 未显示

MFC:显示/隐藏拆分器窗格

Sphinx、reStructuredText 显示/隐藏代码片段