简易数字时钟软件详细制作过程

    这是我自己用VS2010制作的简易数字时钟小软件,在制作过程中收获知识不少,希望和初学MFC编程的朋友分享一下。

一、其功能有一下三点:

1.打开软件后,其程序自动获取当前电脑系统的日期、时间和周次,并同步显示在主对   话框上;

2.点击“设置时间”按钮,弹出设置时间子对话框,在其中可以设置自己想设置的时间  (采用24小时格式制)。若输入的内容和格式都合法则主对话框显示此时间,并依此时   间运行;若输入的内容和格式不合法则会弹出提示消息框。

3.点击“退出”按钮,则会弹出提示消息框,询问用户是否退出系统。

二、制作过程:

1.新建一个项目名为SetTime的MFC对话框应用程序,在主对话框的属性中修改其标题为“数字显示时间”。

2.在主对话框上添加3个静态文本控件、3个编辑框控件和2个按钮控件。在3个编辑框的属性中修改其ID分别为IDC_DATE、IDC_WEEK、IDC_TIME,编辑框文本都设置为居中显示,其中日期和周次编辑框属性设置为只读。2个按钮的ID分别修改为IDC_SETTIME、IDC_EXIT;

3.在类向导中,选择类名CSetTimeDlg,在成员变量中通过添加变量为三个编辑框分别关联对应都为CString类型的变量m_Date、m_Week、m_Time,还要为IDC_DATE编辑框关联CEdit类的对象m_ShowDate;还要为CSetTimeDlg类自定义3个unsigned char类型的变量m_Hour、m_Minute、m_Second。

4.在CSetTimeDlg::OnInitDialog()函数的// TODO: 在此添加额外的初始化代码,其位置下方添加下列代码:

注意:1).在主对话框上要调好三个编辑框的尺寸大小;特别是显示当前时间的编           辑框,其显示文本字体较大。

      2).因为显示当前时间编辑框设置了焦点,所以最后return TRUE;要修改为return FALSE。

5.在类向导中,选择类名CSetTimeDlg,在消息中选择WM_TIMER消息并添加其处理程序,编辑代码进入CSetTimeDlg::OnTimer(UINT_PTR nIDEvent)函数,在其函数中添加下列代码:

6.在类向导中,添加新类(以CDialogEx为基类派生出子类CSubDialogEx),自动会插入一个对话框。在这个对话框中添加1个编辑框,2个按钮(默认是自动添加的)。修改这个编辑框ID为IDC_SUBEDIT,并为其关联CString类型变量m_SubTime;在CSubDialogEx::OnInitDialog()函数中// TODO:  在此添加额外的初始化,位置下方添加下列代码:

7.在类向导中,选择类名CSetTimeDlg,在命令--对象ID中选择IDC_SETTIMER消息,在其右边消息选择BN_CLICKED,然后添加其处理程序,编辑代码。

在CSetTimeDlg::OnClickedSettime()函数中,添加下列代码:

 

8.在类向导中,选择类名CSetTimeDlg,在命令--对象ID中选择IDC_EXIT消息,在其右边消息选择BN_CLICKED,然后添加其处理程序,编辑代码。

在CSetTimeDlg::OnClickedExit()函数中,添加下列代码:

9.编译运行项目后结果如下图:

10.单击“设置时间”按钮,可以重新设置时间,如下图:

如果设置时间内容和格式非法,则会弹出如下图:

单击“退出”按钮,弹出如下图:

三、总结:

1.学习基本控件知识;

2.学习在主对话框中调用子对话框的方法;

3.学习定时器的知识;

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于后台系统自动生成的一点思考

大量实践发现后台管理程序,其实90%的代码都是相同的,当然是在抛弃复杂逻辑业务的情况下,那么如何能高效的节约这些时间呢,那就是接下来我要说的,对于后台系统自动生成的一些思考。 适用情景: 1、表编号id为…

MFC定时器SetTimer函数用法总结

CWnd类的SetTimer成员函数只能在CWnd类或其派生类中调用,而API函数SetTimer则没有这个限制,这是一个很重要的区别。 1、启动定时器。 启动定时器就需要使用CWnd类的成员函数SetTimer。CWnd::SetTimer的原型如下: 参数nIDEvent指定一个非零的…

全网最全的Numpy开发入门教程(详细案例版)

概述 NumPy是一个Python库,每个数据科学专业人员都应该熟悉它这个全面的NumPy教程从头开始介绍NumPy,从基本的数学运算到NumPy如何处理图像数据本文中有大量的Numpy概念和Python代码 介绍 我非常喜欢Python中的NumPy库。在我的数据科学之旅中&#xff…

android开源库收集

1. google valley Android网络通信库 git clone https://android.googlesource.com/platform/frameworks/volley 介绍 http://www.cnblogs.com/bvin/p/3291611.html#2806770 http://liubin.org/2013/05/27/android-volley-at-a-glance/ 2.Afinal是一个android的ioc&#xff…

微信分享JSSDK-invalid signature签名错误的解决方案

核对官方步骤,确认签名算法。 确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?tjsapisign 页面工具进行校验。确认config中nonceStr(js中驼峰标准大写S), timestamp与用以签名中的对应noncestr, timesta…

MFC操作Excel2003的CRange类的Copy函数和Delete函数实现方法

一、CRange类的Copy函数实现方法 具体步骤: 1.实例化一个CRange类对象range1,关联你要拷贝的区域; 2.实例化一个CRange类对象range2,关联你要将要粘贴到的区域; 3.调用前一个range1对象的Copy函数,就可…

Django代码编写规范

1. 编码声明 在 Python 解释器执行代码时,需要告诉解释器代码的编码方式。Python 代码实际上是文本数据,如果代码的编码方式与解释器读取的编码方式不一致,将会因编码错误,代码无法执行。Python 2 解释器读取代码时,默…

Get sdcard directory by adb

解决方案: adb shell echo $EXTERNAL_STORAGE I am making an application, which pulls files(Saved by android app) from the device sdcard by adb. The problem is that different devices, have various sdcard directories i.e: sdcardsdcard/external_sdFi…

VueJs开发笔记—IDE选择和优化、框架特性、数据调用、路由选项及使用

一、IDE的选择: VsCode和WebStorm都是不错的选择,说一下两者的优缺点,调试便捷性来说两者不相上下. WebStorm缺点:性能方面VsCode远好于WebStorm; WebStorm优点:代码引用追踪Ws有VsCode无,控制台…

MFC新建文件夹、打开文件夹的实现方法

一、 MFC新建文件夹到指定路径的实现方法 典例: 二、 MFC保存文件到指定路径的实现方法 典例: 三、 MFC打开指定路径的文件夹的实现方法 典例: 注意:ShellExecute函数还可以打开指定路径的普通文件或者可执行文件。

VueJs生产环境部署

VueJs为客户端语言,所以部署的时候是不需要基于nodejs或其他服务器运行环境,只需要像其他静态站点的方式发布就可以了,下面介绍一下VueJs具体发布的流程还有需要注意的点。 先来看VueJs最终生成的文件目录: 具体的步骤如下&#x…

a20隐藏底部按钮及隐藏状态栏和虚拟按键栏

2019独角兽企业重金招聘Python工程师标准>>> 隐藏RecentButton按钮: 在源码android4.2/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java的makeStatusBarView()方法中添加(这是全志androi…

如何计算一个网段的子网掩码,网络ID,广播地址和可用IP地址数

1.判断两个IP在不在一个网段,主要看这两个IP的网络ID,如果网络ID相同则这两个IP在同一网段 示例:判断192.168.0.11/26 和 192.168.0.111/26在不在同一网段 首先计算两个IP的网络ID: 192.168.0.11/26 子网掩码(2进…

WebApi开启CORS支持跨域POST

概念:CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。 现象:如请…

MFC中CString类字符串与长整型、浮点型、字符数组char数据之间的相互转换

一、长整型数据与CString类字符串相互转换 1.将长整型数据转换为CString字符串类 CString str; long ld; str.Format(_T("%ld"),ld); 2.将CString字符串类转换为长整型数据 CString str; long ld; ld_wtol(str); _wtol()在<stdlib.h> and <wchar.h>…

SSH2 后端编程思路总结

课程快结束了&#xff0c;那我就总结一下利用SSH2框架设计网站后端的思路吧。网站的后端设计大部分操作都是数据的存取&#xff0c;那么就总结一下Strut2中后端操作以及几点要注意的事项吧。后端操作&#xff1a;后端的操作基本上都是在Model、Action以及Service中完成的&#…

如何给APP开发属于自己的小程序

前言 工欲善其事&#xff0c;必先利其器。 首先&#xff0c;我们需要知道微信小程序是什么&#xff1f;微信小程序内核是什么&#xff1f;微信小程序的开发语言什么&#xff1f;这样才能更好的开发微信小程序&#xff0c;以及解决遇到的问题。 一、微信小程序是什么 微信小程…

Xamarin开发笔记—WebView双项事件调用

1.Xamarin调用WebView&#xff1a; 原理&#xff1a;Xamarin.Forms WebView内置方法xx.Eval(..)可以调用到页面里面的js函数。 WebView展示的代码如下&#xff1a; var htmlSource new HtmlWebViewSource();htmlSource.Html "<html><head><meta charse…

数据仓库入门(实验10)在Excel中查询层次结构

一、连接到SSAS二、导入数据三、选择数值、行标签、列标签1. 选择数值2. 选择行标签3. 选择列标签四、过滤五、完成转载于:https://blog.51cto.com/jimshu/1339522

MFC中CString类字符串用法小结

一、 赋值运算 二、 比较运算 注意&#xff1a;如果s1小于s2;则z等于-1&#xff1b;如果s1大于s2;则z等于1&#xff1b;如果s1等于s2;则z等于0&#xff1b; 三、 删除函数 四、 插入函数 五、 计算字符总个数函数 更加详细内容参考VS2010 MSDN