Visual C++基于对话框的MFC应用程序 - 简单的时钟实例实验一(2)

2019-01-10 12:27

(MFC ClassWizard)窗口,并选择Member Variables页; (2)添加成员变量m_Static1。在Member Variables页的Control Ids 框中选择标识符IDC_STATIC1,并点击[Add Variables?]按钮,弹出添加成员变量(Add Member Variables)对话框,在成员变量名(Member variables name)框内输入:m_Static1,并在种类(Category)、 变量类型(Variable type)框内依次输入或选择:Control、CStatic。按[OK]按钮,退出添加成员变量对话框;

(3)添加成员变量m_Static2。在Member Variables页的Control Ids 框中选择标识符IDC_STATIC2,并点击[Add Variables?]按钮,弹出添加成员变量(Add Member Variables)对话框,在成员变量名(Member variables name)框内输入:m_Static2,并在种类(Category)、变量类型(Variable type)框内依次输入或选择:Control、CStatic。按[OK]按钮,退出添加成员变量对话框;

(4)按[OK]按钮,退出类向导(MFC ClassWizard)窗口。 在项目管理区中双击CCh1Dlg类,这时程序代码窗口CCh1Dlg类的头文件中,可以看到如下代码: // Dialog Data

//{{AFX_DATA(CCh1Dlg)

enum { IDD = IDD_CH1_DIALOG };

CStatic m_Static2; //由类向导自动插入

CStatic m_Static1; //}}AFX_DATA

其中插入了CStatic 类型的成员变量m_Static1,该变量为静态控件对象,它通过标识符IDC_STATIC1与图1-2中所示的时钟静态框对应,而m_Static2则通过标识符IDC_STATIC2与日历框对应。

在项目管理区中展开CCh3_1Dlg类,双击OnInitDialog()函数,代码编辑窗口出现该函数

的代码,在该函数的结尾部分加上如下代码: BOOL CCh1Dlg::OnInitDialog( ) {

CDialog::OnInitDialog( ) ??

// TODO: Add extra initialization here CString str=_T(\

m_Static1.SetWindowText(str); //更改时钟框的内容 return TRUE; // return TRUE unless you set the focus to a control

重新编译链接该程序,执行后时钟框显示的内容为:10:10:10。

3.如何获取当前时间

为了使该静态框能正确显示当前时间,必须要解决两个问题,首先是如何获取当前系统时间,其次是如何才能不断及时地刷新时钟框的时间。 在MFC应用程序中,不但可以调用Windows API函数,也可以使用C语言运行库函数time_t time(time_t * timer);和struct tm *localtime(const time_t *timer); 要及时地刷新时钟框,需要有相应事件来触发。为此,可以通过加载系统定时器消息WM_TIMER的响应函数OnTimer( )来实现,用户可以通过SetTimer( )函数设定定时值,这样当定时时间一到,函数OnTimer( )就会自动响应。

我们已经在CCh1Dlg 类中加载了OnTimer( )函数,在项目管理工作区中展开CCh1Dlg类,双击OnTimer( ),将程序代码区的光标移到该函数,加入如下代码:

void CCh1Dlg::OnTimer(UINT nIDEvent) {

// TODO: Add your message handler code here and/or call default time_t m_time; tm *t;

int hour,hour1,min,sec; int year,mon,day,week; CString s;

CString s1[7]={\日\一\二\三\四\五\六\

time(&m_time); //获取当前时间值存入m_time t=localtime(&m_time); //转换为tm结构类型 hour=t->tm_hour; min=t->tm_min; sec=t->tm_sec;

hour1=hour; //24小时制转换成12小时制

year=t->tm_year+1900; mon=t->tm_mon+1; day=t->tm_mday; week=t->tm_wday;

s.Format(\ //将当前时钟送到IDC_STATIC1静态框显示 m_Static1.SetWindowText(s);

s.Format(\年-月\\n\\n -日\\n\\n 星期\ s+=s1[week];

//将当前日历送到IDC_STATIC2静态框显示 m_Static2.SetWindowText(s);

SetTimer(0,500,NULL); //重置定时器 CDialog::OnTimer(nIDEvent); }

为了启动系统定时器,须在CCh1Dlg类的初始化函数OnInitDialog( )中加入SetTimer( )函数,插入的位置如下: // TODO: Add extra initialization here CString str=_T(\

m_Static1.SetWindowText(str); //更改时钟框的内容 SetTimer(0,500,NULL); //重置定时器

return TRUE; // return TRUE unless you set the focus to a control }

编译、运行后如下图


Visual C++基于对话框的MFC应用程序 - 简单的时钟实例实验一(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:河南省百校联盟2018届高三年级11月第二次联考试题——物理

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: