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

合集下载

Visual_C++基于对话框的MFC应用程序【简单时钟】

Visual_C++基于对话框的MFC应用程序【简单时钟】

1.1创建对话框的应用程序1.使用AppWizard创建应用程序框架首先,创建一个对话框应用程序,其工程文件名为:ch1.dsp。

具体步骤如下:(1)启动Visual C++6.0,在File菜单中选择new菜单项;(2)在new对话框的Project页中选择MFC AppWizard(exe)选项,在Project name框中输入:ch1,并在Location框中指定希望的目录路径,编译系统生成的各种文件将会存放在该目录下,然后点击[OK]按钮(3)MFC AppWizard-Step1中选择Dialog based选项,MFC AppWizard-Step2到MFC AppWizard-Step4中取默认选项;(4)进入VC对话框设计界面后,选中[TODO:在这里设置对话控制。

]静态框并按del键删除该框,选中[取消]按钮并按del键删除该按钮;(5)将[确认]按钮拖曳到对话框的下方中间。

生成的对话框设计窗口(如图1-1所示)。

图1-12.向类中添加系统消息响应函数Windows应用程序的采用事件触发、消息驱动机制和大量的消息响应函数构成了应用程序的主体。

本示例需要用到两个消息响应函数OnCtlColor()和OnTimer(),前者响应窗口消息:WM_CTLCOLOR,后者响应窗口消息:WM_TIMER。

关于这两个函数的功能和用法暂且略过,留待后面小节再叙。

这里先介绍响应函数加载的方法。

在CCh1Dlg类中添加OnCtlColor()函数的操作方法如下:(1)打开类向导(MFC ClassWizard)窗口,选择Message Maps 页;(2)选择工程、类和对象标识。

在Message Maps页的Project、Class name、Object Ids框中分别选择:ch1、CCh1Dlg、CCh1Dlg;(3)添加响应函数。

在Message Maps页的Messages框中选中并双击窗口消息:WM_CTLCOLOR,此时,消息WM_CTLCOLOR 的响应函数OnCtlColor()被添加到类向导底部Member Functions框中。

第4部分--实训1 MFC 面向对象程序设计

第4部分--实训1 MFC 面向对象程序设计

到此:100%
谢谢大家
祝学习进步
心情愉快Biblioteka (4)添加运算结果”=“对应的函数: 先得到第一个操作数(比如被加数),然后根据当前的操作类型(加减 乘除)计算结果,并输出到编辑框。 (5) 功能扩展(选做): (a) 为计算器添加平方,开根号(sqrt)等运算。 (#include “math.h”) (b) 如果要让其实现连续运算,比如8+6-3,该如何实现。
(3) 用ClassWizard添加编写定时器函数OnTimer(UINT nIDEvent) 。 (4) 添加对话框类的OnCreate函数
到此:60%
扩展一: 绘制表盘,时针,分针,秒针的代码分别单独做成一个函数 例如: 绘制表盘DrawFace(CDC *pDC,CRect &rc) 用于绘制表盘及表盘上数字
4.2 作业:绘制时钟
目的:熟悉CDC绘图应用。 具体操作步骤如下: (1) 用MFC AppWizard(.exe)创建一个基于对话框的应用程序,项目名Clock。 (2) 在OnPaint函数中添加绘制时钟(修改并添加代码)
在此处添加代码
注意:不要忘记#include “math.h”(因为你要使用正弦余弦函数)
面向对象程序设计
第4部分 案例实训
案例介绍:

案例4.1:计算器 案例4.2:基于对话框绘制时钟
4.1 作业:计算器
目的:熟悉常用控件的应用。 具体操作步骤如下: (1)用MFC AppWizard(.exe)创建一个基于对话框的应用程序,项目名 Computer。 (2)对话框名称改为“计算器”,删除对话框原有控件。为对话框添加一个 编辑框IDC_EDIT1(文字右对齐),16个按钮控件,按钮显示文字如下图所 示。(比如IDC_BUTTON0~IDC_BUTTON9对应文字0~9)

MFC实现简单的小闹钟

MFC实现简单的小闹钟
10
播放声音
❖ 加入Mmsystem.h头文件。 ❖ 加入winmm.lib文件。可以在工程中设置,也可以在文件中
加入以下语句: #pragma comment(lib,"winmm.lib") ❖ 用PlaySound()函数播放声音。
11
最小化到托盘
❖ 把程序放到托盘上的本质就是先在托盘区绘制一个图标,然 后把程序隐藏不见,再对托盘的图标进行消息处理,就可以 了。 绘制图标以及确定图标所传送消息的函数只有一个, 那就是——— WINSHELLAPI BOOL WINAPI Shell_NotifyIcon( DWORD dwMessage, PNOTIFYICONDATA pnid );
❖ 需求分析 ❖ 实现过程 ❖ 实现情况
内容概要
1
需求分析
❖ 程序功能: 实现一个小闹钟。 首先有两个标签页(CTabCtrl控件类),一个标签是
定时器,设定好时间和提示音乐后点击OK,当设定 的时间到达后(可以使用CTime类),提示音乐响 起;另一个标签是倒计时器,设定好倒计时的秒数, 点击OK后便开始倒计时(使用WM_TIMER消息来 实现计时),当倒计时减小到0时,提示音乐响起。
14
然后就是在CPP文件中加入函数onShowTask的实现了:
15
实现情况
❖ 基本功能实现。但是不是很实用,每次定时之后要么保持程 序一直运行,要么在设定时间到达之前手动开启才能听到闹 铃。
解决方案的设想: 1.设置开机启动,让程序自动运行。 2.设置任务计划,在特定的时间开启程序。
16
Thank You!
❖ 程序已经最小化到托盘区了,但是呢,对托盘图标的操作如何进行呢? 这就体现了结构NOTIFYICONDATA的成员uCallbackMessage 的作用 了。它所提供的作用就是,当用户用鼠标点击托盘区的图标的时候(无 论是左键还是右键),会向hWnd所代表的窗口传送消息,如果是上例, 消息的名称就是WM_SHOWTASK。根据VC的消息机制,对自定义消 息增加消息响应函数。

C#实例——钟表模拟

C#实例——钟表模拟

目录摘要: (1)1.C#语言简介 (2)2.实现目标 (2)3.主要方法 (3)4.实验过程中的难点 (3)5.实验过程 (4)6.总结 (6)附录(源程序): (7)用C#实现时钟模拟用C#实现时钟模拟摘要:我们日常生活中有各种各样的时钟。

随着计算机的普及和计算机科学的飞速发展人们开始越来越多的利用计算机解决实际问题,开发一个易于查看的时钟有较大的现实意义。

VisualStudiio 2008是面向Windows Vista、Office 2007、Web 2.0的下一代开发工具,其强大的兼容性以及高速处理能力帮助程序人员轻松应对研究、测试、开发过程中的各种问题。

对于Web,ASP NET AJAX 及其他新技术使开发人员能够迅速创建更高效、交互式更强和更个性化的新一代Web 体验。

本文基于VisualStudiio 2008采用C#语言,应用GDI+应用程序编程借口(API)实现时钟模拟。

关键词:C#开发时钟模拟GDI+ VisualStudio20081.C#语言简介C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。

它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。

C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。

C#旨在设计成为一种“简单、现代、通用”,以及面向对象的程序设计语言,此种语言的实现,应提供对于以下软件工程要素的支持:强类型检查、数组维度检查、未初始化的变量引用检测、自动垃圾收集(Garbage Collection,指一种自动内存释放技术)。

软件必须做到强大、持久,并具有较强的编程生产力。

此种语言为在分布式环境中的开发提供适用的组件开发应用。

为使程序员容易迁移到这种语言,源代码的可移植性十分重要,尤其是对于那些已熟悉C和C++的程序员而言。

VC计算器-小闹钟-通讯录设计(含源文件)

VC计算器-小闹钟-通讯录设计(含源文件)

面向对象Windows程序设计选题:计算器、小闹钟、通讯录学号:姓名:院(系):信息工程学院专业:信息完成日期:指导老师:老师题目一:利用MFC框架编写简易计算器一.需求分析即要实现简单计算器的功能,包括加、减、乘、除等运算功能,还要实现数据的输入、输出、计算、显示及程序退出等功能。

二.总体设计1.程序的创建.使用软件Visual C++ 6.0.,首先,新建一个MFC 基于对话框的工程。

点击文件-新建,在工程选项卡里选择MFC AppWizard[exe],给工程命名Jisuan。

点击确定。

创建一个基于对话框的应用程序。

2.界面的设计按如图所示向对话框添加控件,且按如图所示一样排版。

4.为控件添加成员变量和消息处理函数为IDC_FIRNUM 增加一个变量,点Add Variable…,我们为它增加一个 float 型的变量,命名为m_Firnum。

给第二个编辑框增加float变量m_Secnum。

第三个编辑框增加float变量m_Result。

按ctrl+w选择第一个选项卡 Message Maps,从IDs 中选择IDC_JIA,即加这个按钮,从 Messages 中选择 BN_CLICKED,即当被单击的时候,然后点 AddFunction…为其添加函数然后弹出对话框,为函数命名,选择默认即可,点击OK。

同样为-,*,/添加一样的响应函数。

结果如图:三、编程说明与实现添加如下代码:void CJisuanDlg::OnJia(){// TODO: Add your control notification handler code hereUpdateData(true);m_Result=m_Firnum+m_Secnum;UpdateData(false);}void CJisuanDlg::OnJian(){// TODO: Add your control notification handler code hereUpdateData(true);m_Result=m_Firnum-m_Secnum;UpdateData(false);}void CJisuanDlg::OnCheng(){// TODO: Add your control notification handler code hereUpdateData(true);m_Result=m_Firnum*m_Secnum;UpdateData(false);}void CJisuanDlg::OnChu(){// TODO: Add your control notification handler code hereUpdateData(true);m_Result=m_Firnum/m_Secnum;UpdateData(false);}这里有一个UpdateData(Bool)函数。

MFC之模拟时钟

MFC之模拟时钟

MFC之模拟时钟最近在学习MFC,程序设计⽼师布置”画板“和”模拟时钟“作为实验来实践,由于没去上课,⽹上搜索的很多教程⼏乎都是以VC6.0为基础的,⽽⾝边⼏乎都是VS2008以上,对于初学者来说,有时仿照VC6.0的教程在VS2008或更⾼的环境上难免会出现⼀些困难,特此将模拟时钟程序在VS2008环境下的开发过程总结如下:1.新建项⽬项⽬类型选择“MFC”,模板选择“MFC应⽤程序”,名称⾃拟,这⾥命名为”Clock"。

选择好以后效果如下:2.MFC应⽤程序向导设置选择“下⼀步"这⾥有两个更改,⼀是”应⽤程序类型”选择“基于对话框”,同时取消选中“使⽤Unicode库”。

完成以上两步之后,直接单击“完成”即可。

三、核⼼部分1.⾸先打开“类视图”,选择"CClockDlg"在该类的头⽂件中,找到如下代码:紧接着后⾯添加三个变量⽤于临时保存时间的秒、分、时。

int m_Sec, m_Min, m_Hour;插⼊后的效果如下:2.⼿动添加⼀个消息映射函数,完成时间的获取和指针的绘制。

在CClockDlg类的头⽂件中找到如下代码:在其中增加⼀⾏如下:afx_msg void OnTimer(UINT nIDEvent);增加后显⽰效果如下:接着在资源管理器中找到CClockDlg类的cpp⽂件来实现刚才的函数声明需要添加的代码如下:1void CClockDlg::OnTimer(UINT nIDEvent)2 {3// TODO: Add your message handler code here and/or call default4 CTime time = CTime::GetCurrentTime(); //获得系统时间5 m_Sec = time.GetSecond();6 m_Min = time.GetMinute();7 m_Hour = time.GetHour();89 CDC* pDC = GetDC();10 CRect rect;11 GetClientRect(&rect); //获取客户区域12 CBitmap bitmap; //定义图⽚类13 bitmap.LoadBitmap(IDB_BITMAP1); //加载位图14 CDC memdc; //定义临时画布15 memdc.CreateCompatibleDC(pDC); //创建画布16 memdc.SelectObject(&bitmap); //关联图⽚1718int x = rect.Width()/2;19int y = rect.Height()/2;2021 CPen MinutePen(PS_SOLID,2,RGB(0,0,0)); //设置分针画笔22 memdc.SelectObject(&MinutePen);23 memdc.MoveTo(x,y);24//绘制分针25 memdc.LineTo(x+(long)40*cos(PI/2-2*PI*m_Min/60.0),y-(long)40*sin(PI/2-2*PI*m_Min/60.0));26 CPen HourPen(PS_SOLID,3,RGB(0,0,0)); //设置时针画笔27 memdc.SelectObject(&HourPen);28 memdc.MoveTo(x,y);29//绘制时针30 memdc.LineTo(x+(long)30*cos(PI/2-2*PI*(5*m_Hour/60.0+m_Min/12.0/60.0))31 ,y-(long)30*sin(PI/2-2*PI*(5*m_Hour/60.0+m_Min/12.0/60.0)));32 CPen SecondPen(PS_SOLID,1,RGB(255,0,0)); //设置秒针画笔33 memdc.SelectObject(&SecondPen);34 memdc.MoveTo(x,y);35 memdc.LineTo(x+(long)50*cos(PI/2-2*PI*m_Sec/60.0),y-(long)50*sin(PI/2-2*PI*m_Sec/60.0));//绘制秒针36 memdc.MoveTo(x,y);37 memdc.LineTo(x+(long)10*cos(PI/2-2*PI*(m_Sec+30)/60.0),y-(long)10*sin(PI/2-2*PI*(m_Sec+30)/60.0));//绘制秒针38 SecondPen.DeleteObject();39 MinutePen.DeleteObject();40 HourPen.DeleteObject();41 pDC->BitBlt(0,0,rect.right,rect.bottom,&memdc,0,0,SRCCOPY); //复制图⽚42 memdc.DeleteDC(); //复制临时画布到预览窗⼝43 bitmap.DeleteObject(); //删除图⽚44 ReleaseDC(pDC);45 CDialog::OnTimer(nIDEvent);46 }3.设置时钟位图打开“资源视图”在“资源视图”中添加资源资源类型选择“Bitmap",然后选择”导⼊”,把实现准备好的BMP⽂件导⼊。

实验1 创建对话框应用程序及控件使用

实验1 创建对话框应用程序及控件使用

实验1 创建对话框应用程序及控件使用一.实验目的1.掌握使用“MFC应用程序向导”创建对话框应用程序框架的方法2.掌握给对话框添加控件的方法,以及使用“MFC类向导”为控件通知消息映射消息处理函数的方法3.掌握使用“MFC类向导”为控件添加控件变量的方法4.掌握控件变量与控件的数据交换机制以及使用控件变量访问和控制控件的方法5.掌握对话框中添加自定义消息的方法二.实验内容1.创建一个Windows对话框应用程序,其界面要求实现以下功能:在下部的文本编辑框(Edit Control )中输入内容后,单击“添加”按钮,文本编辑框的内容被作为一个条目添加到上部的列表框(List Box)中2.为上一步创建的程序添加一条自定义消息,消息名为WM_MYMESSAGE,也可自己命名。

单击“添加”按钮时,将发送盖消息,该消息的处理函数将删除编辑框中已输入的所有内容。

三.实验步骤1.使用“MFC应用程序向导”创建一个对话框应用程序,项目名称编程者自己确定。

2.将主动生成的对话框中的静态文本控件和“取消”命令按钮删除,在窗口上部添加一个列表框(List Box)控件,在列表框中的静态文本控件和“取消命令按钮删除,在窗口上部添加一按钮左侧添加一个命令按钮(Button)控件.3.将“确定”按钮的caption属性修改为“退出”,新添加的命令按钮的caption属性修改为“添加”,修改对话框窗口的caption属性为“实验1”,调整各控件的大小和布局如上图所示。

4.为列表框控件添加一个控制变量,类别为control,变量名编程者自己确定,这里取名为m_list,为编辑框控件添加一个控制变量,类别为value,类型Cstring,变量名为m_Edit,也可由编程者自己确定。

5.为“添加”按钮添加并编写BN_CLICKED消息的消息处理函数,该函数代码如下:Void CShiyanDlg : : OnBnclickedButton1( ){//TODO:在此添加控件通知处理程序代码UpdateData(true); //将控件中的数据交换至控件变量If(!m_Edit . ISEmpty()) //如果编辑框内容不空,则将内容添加至列表框M_List . Addstring(m_Edit);}6.编译运行程序,在文本编辑框中输入内容并单击“按钮”,观察执行结果。

visual c++2010 mfc实例

visual c++2010 mfc实例

visual c++2010 mfc实例Visual C++2010是一款由微软开发的集成开发环境(IDE),用于编写Windows操作系统上的应用程序。

MFC(Microsoft Foundation Classes)是Visual C++中的一个类库,它提供了一系列的类和函数,方便开发者构建Windows图形界面应用程序。

在Visual C++2010中,可以利用MFC来创建各种各样的应用程序,包括窗口应用程序、对话框应用程序、文档视图应用程序等等。

下面我们来介绍一些MFC实例,概括地展示如何使用MFC来编写Windows应用程序。

1.窗口应用程序的创建:首先,打开Visual C++2010,选择“新建项目”,在弹出的对话框中选择“Visual C++”->“MFC”->“MFC应用程序”,填写要创建的项目的名称和存储位置,点击“确定”按钮。

接下来,在“应用程序类型”选项中,选择“单文档”、“多文档”或“无文档”视图,然后在“使用的特性”选项中,选择需要的功能(如ActiveX控件等),点击“完成”按钮即可创建窗口应用程序。

2.对话框应用程序的创建:打开Visual C++2010,选择“新建项目”,在弹出的对话框中选择“Visual C++”->“MFC”->“MFC应用程序”,填写要创建的项目的名称和存储位置,点击“确定”按钮。

在接下来的对话框中,选择“对话框”作为应用程序的初始视图,点击“完成”按钮即可创建对话框应用程序。

3.消息处理:在MFC中,可以通过重写消息处理函数来响应特定的消息。

在窗口或对话框类中,可以重写相关的消息处理函数,如OnPaint、OnMouseMove等,然后在这些函数中进行相应的操作。

4.绘图操作:在MFC中,使用CDC类进行绘图操作。

可以在OnPaint函数中使用CDC对话框上的绘图设备进行绘制,也可以在自定义的函数中使用CDC类进行绘图。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.1 创建对话框的应用程序1.使用AppWizard创建应用程序框架首先,创建一个对话框应用程序,其工程文件名为:ch1.dsp。

具体步骤如下:(1)启动Visual C++ 6.0,在File菜单中选择new菜单项;(2)在new对话框的Project页中选择 MFC AppWizard(exe)选项,在Project name框中输入:ch1,并在Location 框中指定希望的目录路径,编译系统生成的各种文件将会存放在该目录下,然后点击[OK]按钮(3)MFC AppWizard-Step1 中选择Dialog based 选项,MFC AppWizard-Step2 到MFC AppWizard-Step4中取默认选项;(4)进入VC对话框设计界面后,选中 [TODO:在这里设置对话控制。

]静态框并按del键删除该框,选中[取消]按钮并按del键删除该按钮; (5)将[确认]按钮拖曳到对话框的下方中间。

生成的对话框设计窗口(如图1-1所示)。

图1-12.向类中添加系统消息响应函数Windows应用程序的采用事件触发、消息驱动机制和大量的消息响应函数构成了应用程序的主体。

本示例需要用到两个消息响应函数OnCtlColor()和OnTimer(),前者响应窗口消息:WM_CTLCOLOR,后者响应窗口消息:WM_TIMER。

关于这两个函数的功能和用法暂且略过,留待后面小节再叙。

这里先介绍响应函数加载的方法。

在CCh1Dlg类中添加OnCtlColor( )函数的操作方法如下:(1)打开类向导(MFC ClassWizard)窗口,选择Message Maps 页;(2)选择工程、类和对象标识。

在Message Maps页的Project、Class name、Object Ids框中分别选择:ch1、CCh1Dlg、CCh1Dlg;(3)添加响应函数。

在Message Maps页的Messages框中选中并双击窗口消息:WM_CTLCOLOR,此时,消息WM_CTLCOLOR 的响应函数OnCtlColor( )被添加到类向导底部Member Functions框中。

注意,添加OnTimer( )函数的过程与上述过程相似,只是第(3)步选择WM_TIMER消息,而不是WM_CTLCOLOR。

添加完毕后,按[OK]按钮退出类向导。

回到项目工作区,在项目工作区窗口展开CCh1Dlg类,可以看到类中添加了OnCtlColor( )和OnTimer( )两个消息响应函数。

1.2 静态框控件1.静态框控件与CStatic类静态框的功能是通过MFC类库中的CStatic类实现的。

静态框可以用来显示文本、位图或图元文件等。

示例ch1中的日历框和时钟框就是通过静态控件实现的,为此,下面将围绕示例介绍静态控件使用方法。

首先在对话框中添加一个显示内容为“当前时间”的静态框,步骤如下:(1)添加静态框。

参考图1-1,用鼠标器单击右边控件工具栏中静态控件(Static Text)按钮,通过鼠标在对话框左边偏上的位置上拖曳出一个静态框,调整静态框到合适的大小;(2)打开静态控件属性对话框。

右击该静态框,从弹出菜单中选择属性(Properties)菜单项,弹出属性(TextProperties)对话框;(3)更改静态框中文本内容。

在属性对话框中选择General 页,将Caption框的内容修改为:当前时间:(4)单击属性对话框右上角的关闭按钮,关闭属性对话框。

接着添加一个显示内容为“00:00:00”的时钟静态框:(1)重复上面(1)、(2)两步操作,在“当前时间:”静态框下方添加一个新的静态框;(2)更改静态控件标识符和文本内容。

在属性对话框中选择General页,将ID框的标识符IDC_STATIC改为:IDC_STATIC1,将Caption框的内容修改为:00:00:00;(3)设置文本对齐方式。

在属性对话框中选择Styles页,从Align text列表框中选择Center选项、在多选框中选中Center Vertically选项;(4)设置边框样式。

在属性对话框中选择Extended Styles 页,选中Static edge项;(5)单击属性对话框右上角的关闭按钮,关闭属性对话框。

最后,按上述方法在对话框的右侧添加一个日历静态框,其属性参数设置如下:(1)在属性对话框中选择General页,将ID 框的标识符IDC_STATIC改为:IDC_STATIC2,将Caption框的内容修改为:\n 2004年03月\n\n 12日\n\n 星期五其中“\n”表示换行,而插入空格是为了调整日期显示的位置;(2)在属性对话框中选择Styles页,从Align text列表框中选择Left选项;(3)在属性对话框中选择Extended Styles页,选中Modal frame 项。

对话框界面设计(如图1-2所示)。

图1-22.更改静态框文本内容程序运行时,用户无法通过键盘输入更改静态框的内容。

如需要动态地变更静态框的内容,可通过编程来实现。

为此需要在CCh3_1Dlg类中添加两个分别与IDC_STATIC1、IDC_STATIC2静态控件相关成员变量,操作如下:(1)在View菜单中选择ClassWizard菜单项,打开类向导(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 hereCString str=_T("10:10:10");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 defaulttime_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%12; //24小时制转换成12小时制year=t->tm_year+1900;mon=t->tm_mon+1;day=t->tm_mday;week=t->tm_wday;s.Format("%02d:%02d:%02d",hour,min,sec);//将当前时钟送到IDC_STATIC1静态框显示m_Static1.SetWindowText(s);s.Format("\n %4d年%2d月\n\n %2d日\n\n 星期",year,mon,day);s+=s1[week];//将当前日历送到IDC_STATIC2静态框显示m_Static2.SetWindowText(s);SetTimer(0,500,NULL); //重置定时器CDialog::OnTimer(nIDEvent);}为了启动系统定时器,须在CCh1Dlg类的初始化函数OnInitDialog( )中加入SetTimer( )函数,插入的位置如下:// TODO: Add extra initialization hereCString str=_T("10:10:10");m_Static1.SetWindowText(str); //更改时钟框的内容SetTimer(0,500,NULL); //重置定时器return TRUE; // return TRUE unless you set the focus to a control}编译、运行后如下图4.设置静态框字符和背景的颜色静态控件框字符和背景一般使用系统默认的颜色,但也可以改变默认设置,选择用户所需的色彩。

相关文档
最新文档