我们先看一下数字时钟的效果图
1.首先,我们先创建一个基本对话框程序,不会的可以点这里:使用Visual C++6.0创建MFC工程单文档、多文档、对话框界面;
2.自定义一个对话框类(也可以直接使用刚才创建的基本对话框),该类是继承自我们所有对话框的基类(父类)CDialog的,不会的可以参考:如何在MFC中实现自定义对话框类;
3.为2中自定义的对话框添加上相应的控件,这里以静态文本作为一个数字时钟的显示控件,设置其ID为:IDC_STATIC_Time;
为我们这个弹出的对话框添加一个数字时钟的标题(DigitalClock)
4.在我们的主对话框上添加一个按钮,命名为数字时钟,记住此时的按钮的ID
5.为数字时钟按钮添加映射响应,打开类向导,为我们的数字时钟按钮添加点击响应
6.建立类向导,为我们的mydialog类,添加一个DoModal函数,该函数可以使我们点击数字时钟按钮时,弹出我们的数字时钟对话框,然后在我们添加的点击按钮的函数中添加如下代码:
mydialog dialog;//创建一个对话框对象
dialog.DoModa();//弹出我们的数字时钟对话框
然后我们发现,运行时会出现错误
这是因为我们新创建的对象,的头文件没有包含在我们这个主对话框的.cpp文件中,它不知道它是谁。于是我们可以添加
#include "mydialog.h"在,textDlg.cpp的开头,这样就可以运行了。
详细的操作过程如下:
7.为我们的静态文本控件(要使用控件的ID,ID在上面已经设置过了),绑定变量
8.在mydialog.h文件中添加对话框初始化函数,在mydialog.cpp文件中添加初始化函数的实现,并设置定时器
当然初始化函数是有返回值的
9.先添加定时器的映射,得到OnTimer函数
10.在OnTimer函数中编写我们的数字时钟的编辑部分
void mydialog::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
SYSTEMTIME st;//创建系统时间对象
GetLocalTime(&st);//获得当前系统时间
CString strtime;//设置一个字符变量
strtime.Format("%2d:%2d:%2d:%2d",st.wHour,st.wMinute,st.wSecond,st.wMilliseconds/10);//将系统时间格式化为字符串
m_Time=strtime;//将格式化为字符串的时间赋值给静态文本控件所绑定的变量
UpdateData(FALSE);//更新对话框控件的值
CDialog::OnTimer(nIDEvent);
}
11.最后我们要关闭定时器,先需要添加一个销毁的映射(这里我已经添加过了)
在函数中添加下面代码
void mydialog::OnDestroy()
{
CDialog::OnDestroy();
m
// TODO: Add your essage handler code here
KillTimer(1);//关闭定时器
}
最后看一下,运行的结果: