VC++ 时间日期控件控件程序编程步骤(P110)
- 格式:doc
- 大小:94.50 KB
- 文档页数:4
攻克VC软件开发时间日期显示软件制作需要源码的加QQ467477957打开Microsoft Visual C++ 6.0,File -> New ->Projects/MFC AppWizard(exe) 填写工程名称和路径->OK编译、运行软件开发结果:Delete键删除多余控件,调整大小,添加一些控件,最终如图:其中添加的控件有组合框控件单击添加的组合框控件,在General下的Caption(标题)修改为:休闲娱乐添加的编辑框控件:右击添加的控件,选择最后的Properties属性,出现编辑框属性在Styles风格下,勾选Read-only只读单击主框架,在Styles下选择最小化框此时主框架出现编译,运行:为编辑框添加成员变量CString m_strTime切换到Class View,在主对话框CMyDlg中添加一个类成员函数,完成刷新时间显示在主对话框CMyDlg中,添加WM_TIMER消息响应函数,和代码在主对话框CMyDlg的OnInitDialog()中,加入启动计时函数及初始化显示函数编译、运行:修改应用程序图标:在Resource View选项卡中,Delete删除IDR_MAINFRAME,将刚引入图标的ID修改为IDR_MAINFRAME编译、运行:在工程的Debug/目录下,发现应用程序图标改变为我们想要的图标。
使用位图作为对话框背景Resource view -> Dialog -> 双击对话框,出现对话框的初始化函数OnInitDialog()创建位图画刷为对话框添加WM_CTLCOLOR消息响应函数,使用位图画刷填充对话框背景在Dlg.h中添加一个画刷变量编译、运行:右击编辑框,选择最后的Properties属性,出现编辑框属性。
在Styles风格下,去掉勾选Read-only只读编译、运行:发布软件:修改编译方式为静态编译编译、运行:到G:\时间日期显示软件\时间日期显示软件\Debug目录下找到.exe软件即可发布。
VC++中CTime的用法时间操作VC++中CTime的几种用法:获得当前日期和时间CTime tm=CTime::GetCurrentTime();CStringstr=tm.Format("%Y-%m-%d");在VC中,我们可以借助CTime时间类,获取系统当前日期,具体使用方法如下:CTime t = CTime::GetCurrentTime(); //获取系统日期intd=t.GetDay(); //获得几号int y=t.GetYear(); //获取年份int m=t.GetMonth(); //获取当前月份int h=t.GetHour(); //获取当前为几时int mm=t.GetMinute(); //获取分钟ints=t.GetSecond(); //获取秒int w=t.GetDayOfWeek(); //获取星期几,注意1为星期天,7为星期六如果想计算两段时间的差值,可以使用CTimeSpan类,具体使用方法如下:CTime t1( 1999, 3, 19, 22, 15, 0 );CTime t =CTime::GetCurrentTime();CTimeSpan span=t-t1; //计算当前系统时间与时间t1的间隔int iDay=span.GetDays(); //获取这段时间间隔共有多少天intiHour=span.GetTotalHours(); //获取总共有多少小时int iMin=span.GetTotalMinutes();//获取总共有多少分钟int iSec=span.GetTotalSeconds();//获取总共有多少秒设置计时器定义TIMER ID#define TIMERID_JISUANFANGSHI 2在适当的地方设置时钟,需要开始其作用的地方;SetTimer(TIMERID_JISUANFANGSHI,200,NULL);在不需要的时候销毁掉时钟KillTimer(TIMERID_JISUANFANGSHI);消息映射void CJisuan::OnTimer(UINTnIDEvent){}///////////////////////////////////////////////////////////////////CTi meSpanCTimeSpan没有基类。
VC++编程技术连载---VC++日历控件使用2007-06-22 08:12:41VC++编程技术连载---VC++日历控件使用一、有关日历控件的介绍Win32 API提供了一个显示日期得当彩色日历控件,日期的显示模式是基于控制面板中的区域性设置或者说是依赖于用户的操作系统。
具体的日历控件如下图一所示:图一、日历控件显示效果这个常用的日历控件的标题条包含两个按钮和两个标签,左边的按钮准许用户单击选择前一个月份,左边的标签显示当前选择的月份,右边的标签显示当前日期中的年份。
右边的按钮是让用户选择下一个月份。
日历控件可以配置成显示多个月份,下图是一具体的实例:图二、显示多个月份的日历控件如果要让日历控件显示多个月份,按钮的个数将通过前月或后月列表来增加或减少。
例如,如果控件正在显示4月或5月,这时用户点击了左边的按钮,控件将显示3月或4月;如果用户点击了右边的按钮,控件将显示5月和6月。
此外,选择当前年份中的任意一个月份,用户可以点击标题框中的月份名,这时候将显示一个月份列表供用户来选择。
具体如图所示:图三、显示月份列表如果要更改年份,用户可以点击年份标签,这时候将显示旋转按钮,用户可以通过点击旋转按钮的上下键来更改年份,也可以使用键盘上的上下箭头来更改年份。
图四、更改日历控件的年份在标题条的下面,根据控制面板的格式显示着星期的简写,在英语地区,每个星期的第一天通常是星期天。
开发人员可以改变控件中的第一天设置。
控件上,当前选择的日期有一圆圈。
用户可以点击欲选择的日期来在控件上选择一个日期。
在大部分地区,日期以数字的形式显现在一个白色背景上(这个背景颜色乃至控件上的任何颜色可以通过程序来改变)。
默认的情况下,控件显示一个椭圆围绕的当前日期。
使用标题条按钮、月份和年份标签,用户可以更改日期。
如果控件显示的不是当前日期,用户可以通过点击控件底部显示今天日期的标签来使控件显示今天的日期。
(如果你是一个程序员,可以隐藏控件底部这个显示今日日期的标签)。
VC++数据库编程日期时间类变量的处理C++编程时对日期时间类变量的处理一般采用CTime与COleDateTime CTime类1) 获取当前时间。
CTime time;time = CTime::GetCurrentTime();2) 获取时间元素。
int year = time.GetYear() ;int month = time.GetMonth();int day = time.GetDay();int hour = time.GetHour();int minute = time.GetMinute();int second = time.GetSecond();int DayOfWeek = time.GetDayOfWeek() ;Returns the day of the week based on local time; 1 = Sunday, 2 = Monday, to 7 = Saturday 3) 获取时间间隔。
CTimeSpan timespan(0,0,1,0); // days,hours,minutes,secondstimespan = CTime::GetCurrentTime() - time;4) 把时间转换为字符串。
CString sDate,sTime,sElapsed Time ;sDate = time.Format("%m/%d/%y"); //ex: 12/10/98sTime = time.Format("%H:%M:%S"); //ex: 9:12:02sElapsed Time = timespan.Format("%D:%H:%M:%S");// %D is total elapsed days要想知道更多的时间格式,参见M F C文档中的strftime。
COleDateTime类1) 获得一年中的某一天。
VC时间编程——API函数、CTime类、日期月历控件一获取时间的API函数二获取进程和线程的相关时间三文件时间和系统时间之间的转换四CTime类五时间控件一获取时间的API函数SYSTEMTIMEtypedef struct_SYSTEMTIME{WORD wYear;//年WORD wMonth;//月WORD wDayOfWeek;//星期星期日为0星期一为1以此类推。
WORD wDay;//日WORD wHour;//小时WORD wMinute;//分钟WORD wSecond;//秒WORD wMilliseconds;//毫秒}SYSTEMTIME;GetLocalTimeVOID GetLocalTime(LPSYSTEMTIME lpSystemTime//address of system time structure);功能:获取当前的系统时间(本地区的时间)。
参数:lpSystemTime出参,保存当前的系统时间。
SetLocalTimeBOOL SetLocalTime(CONST SYSTEMTIME*lpSystemTime//address of local time to set);功能:设置系统时间参数:lpSystemTime是SYSTEMTIME结构体指针,用指定的SYSTEMTIME结构体中的信息设置当前系统时间。
GetSystemTimeVOID GetSystemTime(LPSYSTEMTIME lpSystemTime//address of system time structure);功能:获取当前的系统时间。
这个时间使用世界标准时间(UTC)来表示的。
GetTickCountDWORD GetTickCount(VOID)功能:返回系统启动到目前的毫秒数。
二获取进程和线程的相关时间GetThreadTimesBOOL GetThreadTimes(HANDLE hThread,//specifies the thread of interestLPFILETIME lpCreationTime,//when the thread was createdLPFILETIME lpExitTime,//when the thread was destroyedLPFILETIME lpKernelTime,//time the thread has spent in kernel mode LPFILETIME lpUserTime//time the thread has spent in user mode);功能:获得线程的相关时间参数说明:hThread线程句柄lpCreationTime指向一个FILETIME结构体返回线程被创建时的时间;lpExitTime指向一个FILETIME结构体返回线程被终止时的时间;lpKernelTime指向一个FILETIME结构体返回线程在内核模式下执行的累计时间;lpUserTime指向一个FILETIME结构体返回线程在用户模式下执行的累计时间;返回值:成功,则返回TRUE;失败,则返回FALSE。
【例Ex_Timer】自动时间显示①用MFC AppWizard(exe)创建一个默认的对话框应用程序Ex_Timer。
②将对话框的标题设为“自动时间显示”。
删除“TODO: 在这里设置对话控制。
”静态文本控件和[取消]按钮,将[确定]按钮标题改为“退出”。
③打开对话框网格,调整对话框大小为,参看图10.45的控件布局,向对话框添加2个静态标签控件、1个日期时间控件(设为“时间”格式,其它默认)、1个进展条控件(去除“边框”选项,选中“平滑”项,其它默认)。
④打开MFC ClassWizard的Member Variables页面,为进展条控件添加Control类型变量m_wndProgress,为日期时间控件添加Value类型(CTime)变量m_curTime。
⑤再次打开MFC ClassWizard,切换到Messsage Maps页面,为CEx_TimerDlg类添加WM_TIMER消息映射,并增加下列代码:void CEx_TimerDlg::OnTimer(UINT nIDEvent){m_curTime = CTime::GetCurrentTime();// 获取当前时间UpdateData( FALSE ); // 结果显示在控件中int nSec = m_curTime.GetSecond(); // 获取当前时间的秒数m_wndProgress.SetPos( nSec ); // 设定进展条的当前位置CDialog::OnTimer(nIDEvent);}⑥在CEx_TimerDlg::OnInitDialog中添加下列代码:BOOL CEx_TimerDlg::OnInitDialog(){CDialog::OnInitDialog();…m_wndProgress.SetRange( 0, 59 );SetTimer( 1, 200, NULL );return TRUE; // return TRUE unless you set the focus to a control}⑦编译运行。
案例五模拟时钟应用程序以实例为背景学习基于MFC的WINDOWS应用程序设计,编写一个模拟时钟程序,此程序在屏幕左边有一个指针式钟面,右方有两个矩形框,上面以数字方式显示日期和时间,该时间应与指针显示的时间一致,下方的矩形框作为秒表。
用菜单选项或按钮设置时间和秒表。
时间不必与机器系统时间相同,可任意设置。
模拟时钟示意图1 编程要求(1)为该程序设计一个美观大方的图标。
(2)程序界面设计合理,色彩得体大方,显示正确。
(3)时针、分针和秒针形象美观,即使各指针重合也可辨认。
(4)各指针运动规律正确。
为便于演示,时钟速度应比实际时间快20倍,即1小时相当于3分钟。
(5)数字式时钟的时间显示与指针式时钟显示一致。
(6)按下设置时间按钮或菜单项可弹出一对话框,用于设置当前的时间和日期。
(7)按下秒表控制按钮后,秒表显示窗中显示从0开始的时间,单位为百分之一秒。
再次按下秒表控制按钮后计时停止,该窗口显示累计时间。
2 问题分析本题主要涉及到的知识点有:时钟指针运动算法、屏幕重绘方法、定时器消息、鼠标消息、菜单命令、对话框、画笔/画刷、显示文字等。
指针运动算法和屏幕重绘方法是本程序主要难点所在。
不论何种指针,每次转动均以π/30弧度(一秒的角度)为基本单位,且都以表盘中心为转动圆心。
计算指针端点(x, y)的公式如下:x =圆心x坐标+ 指针长度* cos (指针方向角)y =圆心y坐标+ 指针长度* sin (指针方向角)注意,指针长度是指自圆心至指针一个端点的长度(是整个指针的一部分),由于指针可能跨越圆心,因此一个指针需要计算两个端点。
三个指针的运动是相关联的,秒针转一圈引起分针运动一格,分针转一圈引起时针运动一格,因此应该使用一个定时器消息来处理指针的运动。
若用三个定时器消息分别处理时针、分针和秒针的运动,就会使问题复杂化且不易实现三个指针联动的正确规律。
采用一个定时器消息可以很容易实现指针联动算法。
由于屏幕的重绘速度很快(50 ms一次),如果采用全屏删除式重绘则闪烁十分明显,显示效果不佳。
C/C++中的日期和时间 time_t与struct tm2006-07-18 14:07摘要:本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。
本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。
关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元)1.概念在C/C++中,对字符串的操作有很多值得注意的问题,同样,C/C++对时间的操作也有许多值得大家注意的地方。
最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作、获取和显示等等的问题。
下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法.通过学习许多C/C++库,你可以有很多操作、使用时间的方法。
但在这之前你需要了解一些“时间”和“日期”的概念,主要有以下几个:Coordinated Universal Time(UTC):协调世界时,又称为世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。
比如,中国内地的时间与UTC的时差为+8,也就是UTC+8。
美国是UTC-5。
Calendar Time:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。
这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量,所以可以说日历时间是“相对时间”,但是无论你在哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的。
epoch:时间点。
时间点在标准C/C++中是一个整数,它用此时的时间和标准时间点相差的秒数(即日历时间)来表示。
clock tick:时钟计时单元(而不把它叫做时钟滴答次数),一个时钟计时单元的时间长短是由CPU控制的。
VC++时间日期控件控件程序编程步骤(P110)本信息对话框来添加和修改学生基本信息,如图。
[例Ex_Ctrl6SDI] 创建并使用学生基本信息对话框(1)用MFC AppWizard(exe)创建一个默认的单文档应用程序Ex_Ctrl6SDI。
(2)向应用程序中添加一个对话框资源IDD_STUINFO,标题定为“学生基本信息”,字体设为“宋体,9号”,创建此对话框类为CStuInfoDlg。
将[OK]和[Cancel]按钮的标题改为“确定”和“取消”。
(4)打开对话框网格,参看图的控件布局,为对话框添加如表所示的一些控件。
(1)打开ClassWizard的Member Variables页面,看看Class name是否是CStuInfoDlg,选中所需的控件ID号,双击鼠标。
依次为下列控件增加成员变量。
如表所示。
的初始值。
如下面的代码:CStuInfoDlg::CStuInfoDlg(CWnd* pParent /*=NULL*/): CDialog(CStuInfoDlg::IDD, pParent){m_bMale = FALSE;//{{AFX_DATA_INIT(CStuInfoDlg)…//}}AFX_DATA_INIT}代码中,//{{AFX_DATA_INIT(CStuInfoDlg)和//}}AFX_DATA_INIT之间的代码是控件变量的初始化代码,并由MFC ClassWizard自动管理。
(3)用MFC ClassWizard为CStuInfoDlg类添加WM_INITDIALOG消息映射,并添加下列初始化代码:BOOL CStuInfoDlg::OnInitDialog(){CDialog::OnInitDialog();// 设置单选按钮初始选中状态if (!m_bMale)CheckRadioButton(IDC_RADIO_MALE,IDC_RADIO_FEMALE,I DC_RADIO_FEMALE);elseCheckRadioButton(IDC_RADIO_MALE, IDC_RADIO_FEMALE, IDC_RADIO_MALE);// 这里对专业组合框进行初如化m_tBirth = CTime(1986, 1, 1, 0, 0, 0); // 对出生年月初始化UpdateData(FALSE);return TRUE; // return TRUE unless you set the focus to a control(4)用MFC ClassWizard为单选按钮IDC_RADIO_MALE添加BN_CLICKED的消息映射,并增加下列代码:void CStuInfoDlg::OnRadioMale(){m_bMale = TRUE;}(5)用MFC ClassWizard为单选按钮IDC_RADIO_FEMALE添加BN_CLICKED的消息映射,并增加下列代码:void CStuInfoDlg::OnRadioFemale(){m_bMale = FALSE;}(6)用MFC ClassWizard为按钮IDOK添加BN_CLICKED的消息映射,并增加下列代码:void CStuInfoDlg::OnOK(){UpdateData();m_strName.TrimLeft();m_strNo.TrimLeft();if (m_strName.IsEmpty())MessageBox("必须要有姓名!");else if (m_strNo.IsEmpty())MessageBox("必须要有学号!");elseCDialog::OnOK();}(1)打开Ex_Ctrl6SDI单文档应用程序的菜单资源,添加顶层菜单项“测试(&T)”,在其下添加一个菜单项“学生基本信息(&U)”,ID为ID_TEST_STUINFO。
VC++基于MFC控件的创建以及调用案例少将要求:创建一个简单的时间控件,获取系统的当前时间。
在Microsoft Visual Studio 2008中调用该时间控件显示在窗口中。
程序设计:1.打开Microsoft Visual C++ 6.0,新建一个MFC 工程,工程名:TimeActiveX运行选择ActiveX后在空白区域右键>>Insert New····选择Insert New····弹出如下界面。
选择自己创建的控件。
时钟控件的界面外观开始是一个椭圆形状我们可以在onDraw函数中自己定义控件的外观。
参考代码如下://这里可以自己定义控件的外观void CTimeActiveXCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid){// TODO: Replace the following code with your own drawing code.pdc->FillRect(rcBounds,CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));//pdc->Ellipse(rcBounds);//去掉默认椭圆外观/*要求改变控件的背景颜色等,步骤如下1.定义画刷2.将时钟背景改为透明模式3.定义画刷的矩形范围,rcBounds值是onDraw()函数中的参数,由系统传来4.设置文字的前景色*/CBrush brush=(TranslateColor(GetBackColor()));//1pdc->SetBkMode(TRANSPARENT);//2pdc->FillRect(rcBounds,&brush);//3pdc->SetTextColor(TranslateColor(GetForeColor()));//4//显示时钟CTime tm=CTime::GetCurrentTime();CString str=tm.Format("%H:%M:%S");pdc->TextOut(15,15,str);}这样我们所看到的时钟外观效果就是下面图中的所看到的了。
案例五模拟时钟应用程序以实例为背景学习基于MFC的WINDOWS应用程序设计,编写一个模拟时钟程序,此程序在屏幕左边有一个指针式钟面,右方有两个矩形框,上面以数字方式显示日期和时间,该时间应与指针显示的时间一致,下方的矩形框作为秒表。
用菜单选项或按钮设置时间和秒表。
时间不必与机器系统时间相同,可任意设置。
模拟时钟示意图1 编程要求(1)为该程序设计一个美观大方的图标。
(2)程序界面设计合理,色彩得体大方,显示正确。
(3)时针、分针和秒针形象美观,即使各指针重合也可辨认。
(4)各指针运动规律正确。
为便于演示,时钟速度应比实际时间快20倍,即1小时相当于3分钟。
(5)数字式时钟的时间显示与指针式时钟显示一致。
(6)按下设置时间按钮或菜单项可弹出一对话框,用于设置当前的时间和日期。
(7)按下秒表控制按钮后,秒表显示窗中显示从0开始的时间,单位为百分之一秒。
再次按下秒表控制按钮后计时停止,该窗口显示累计时间。
2 问题分析本题主要涉及到的知识点有:时钟指针运动算法、屏幕重绘方法、定时器消息、鼠标消息、菜单命令、对话框、画笔/画刷、显示文字等。
指针运动算法和屏幕重绘方法是本程序主要难点所在。
不论何种指针,每次转动均以π/30弧度(一秒的角度)为基本单位,且都以表盘中心为转动圆心。
计算指针端点(x, y)的公式如下:x =圆心x坐标+ 指针长度* cos (指针方向角)y =圆心y坐标+ 指针长度* sin (指针方向角)注意,指针长度是指自圆心至指针一个端点的长度(是整个指针的一部分),由于指针可能跨越圆心,因此一个指针需要计算两个端点。
三个指针的运动是相关联的,秒针转一圈引起分针运动一格,分针转一圈引起时针运动一格,因此应该使用一个定时器消息来处理指针的运动。
若用三个定时器消息分别处理时针、分针和秒针的运动,就会使问题复杂化且不易实现三个指针联动的正确规律。
采用一个定时器消息可以很容易实现指针联动算法。
由于屏幕的重绘速度很快(50 ms一次),如果采用全屏删除式重绘则闪烁十分明显,显示效果不佳。
用Visual C#.NET编写服务器日期控件一、序言Visual C#.net是微软公司出品的一种新的编程语言(以下简称C#),它继承了C 语言的一些特性,也加入了一些新的元素。
以前用过Delphi开发程序的人可能刚开始使用C#的时候,对其有一种似曾相识的感觉(至少包括我)。
是的,C#语言的创始人正是以前在Borland公司开发出Delphi语言的Anders Hejlsberg。
在我开始使用C#开发程序时,就觉得它是一款很棒的开发Windows Form & Web程序的RAD工具。
在开发Web程序方面,C#的出现打破了以前的网页开发模式,实现了与开发WindowsForm程序一样的所见即所得的功能。
C#提供了一些常用的Web Form Control供开发人员使用,并且只需将控件拖入页面中即可,非常简单。
但有时这些控件也不能满足开发人员的需要,需要开发人员自己编写用户控件(User Control)或自定义控件(Custom Control)来满足需求。
在这里,我将讲解如何在C#中开发服务器控件。
二、预备知识在C#中可以开发两种服务器控件,一个是用户控件(User Control)和自定义控件(Custom Control)。
用户控件的本质与页面文件(ASP x文件)差不多,是可被其它aspx页面重复使用的HTML代码段,当然它也包括后台代码(Code-behind),后缀名是ascx。
所以在开发一些公用的静态页面时(例如页头,页脚)经常用到,但它的缺点是不易继承,不易分发,无法编译成二进制代码来进行部署。
但是自定义控件的功能就强大许多,它可以被编译成二进制代码(DLL文件),可以被扩展、继承、分发。
就像Web Form Control一样,其实它们每个控件就是一个DLL文件。
开发用户控件比较简单,就像编写一个aspx页面一样,在这里就不介绍了。
本文对象是自定义控件。
服务器控件的基类是System.Web.UI.Control。
#include <time.h>#include <stdio.h>int main( void ){time_t t = time( 0 );char tmp[64];strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z", localtime(&t) );puts( tmp );return 0;}/*%a 星期几的简写%A 星期几的全称%b 月分的简写%B 月份的全称%c 标准的日期的时间串%C 年份的后两位数字%d 十进制表示的每月的第几天%D 月/天/年%e 在两字符域中,十进制表示的每月的第几天%F 年-月-日%g 年份的后两位数字,使用基于周的年%G 年分,使用基于周的年%h 简写的月份名%H 24小时制的小时%I 12小时制的小时%j 十进制表示的每年的第几天%m 十进制表示的月份%M 十时制表示的分钟数%n 新行符%p 本地的AM或PM的等价显示%r 12小时的时间%R 显示小时和分钟:hh:mm%S 十进制的秒数%t 水平制表符%T 显示时分秒:hh:mm:ss%u 每周的第几天,星期一为第一天(值从0到6,星期一为0)%U 第年的第几周,把星期日做为第一天(值从0到53)%V 每年的第几周,使用基于周的年%w 十进制表示的星期几(值从0到6,星期天为0)%W 每年的第几周,把星期一做为第一天(值从0到53)%x 标准的日期串%X 标准的时间串%y 不带世纪的十进制年份(值从0到99)%Y 带世纪部分的十制年份%z,%Z 时区名称,如果不能得到时区名称则返回空字符。
%% 百分号*/。
VC++获取当前系统时间日期GetSystemTime()函数的用法1.使用CTime类CString str;//获取系统时间CTime tm;tm=CTime::GetCurrentTime();str=tm.Format("现在时间是%Y年%m月%d日 %X");MessageBox(str,NULL,MB_OK);2.得到系统时间日期(使用GetLocalTime)SYSTEMTIME st;CString strDate,strTime;GetLocalTime(&st);strDate.Format("%4d-%2d-%2d",st.wYear,st.wMonth,st.wDa y);strTime.Format("%2d:%2d:%2d",st.wHour,st.wMinute,st.wSe cond) ;AfxMessageBox(strDate);AfxMessageBox(strTime);3.使用GetTickCount//获取程序运行时间long t1=GetTickCount();//程序段开始前取得系统运行时间(ms) Sleep(500);long t2=GetTickCount();();//程序段结束后取得系统运行时间(ms)str.Format("time:%dms",t2-t1);//前后之差即程序运行时间AfxMessageBox(str);//获取系统运行时间long t=GetTickCount();CString str,str1;str1.Format("系统已运行 %d时",t/3600000);str=str1;t%=3600000;str1.Format("%d分",t/60000);str+=str1;t%=60000;str1.Format("%d秒",t/1000);str+=str1;AfxMessageBox(str);4.使用time_t time( time_t * timer ) 精确到秒计算时间差使用double difftime( time_t timer1, time_t timer05.使用DWORD GetTickCount() 得到的是系统运行的时间精确到毫秒6.要获取高精度时间,可以使用BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)获取系统的计数器的频率BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)获取计数器的值然后用两次计数器的差除以Frequency就得到时间。
本信息对话框来添加和修改学生基本信息,如图。
[例Ex_Ctrl6SDI] 创建并使用学生基本信息对话框
(1)用MFC AppWizard(exe)创建一个默认的单文档应用程序Ex_Ctrl6SDI。
(2)向应用程序中添加一个对话框资源IDD_STUINFO,标题定为“学生基本信息”,字体
设为“宋体,9号”,创建此对话框类为CStuInfoDlg。
将[OK]和[Cancel]按钮的标题改为“确定”和“取消”。
(4)打开对话框网格,参看图的控件布局,为对话框添加
如表所示的一些控件。
(1)打开ClassWizard的Member Variables页面,看看Class name是否是CStuInfoDlg,选中所需的控件ID号,双击鼠标。
依次为下列控件增加成员变量。
如表所示。
的初始值。
如下面的代码:
CStuInfoDlg::CStuInfoDlg(CWnd* pParent /*=NULL*/)
: CDialog(CStuInfoDlg::IDD, pParent)
{
m_bMale = FALSE;
//{{AFX_DATA_INIT(CStuInfoDlg)
…//}}AFX_DATA_INIT
}
代码中,//{{AFX_DATA_INIT(CStuInfoDlg)和//}}AFX_DATA_INIT之间的代码是控件变量的初始化代码,并由MFC ClassWizard自动管理。
(3)用MFC ClassWizard为CStuInfoDlg类添加WM_INITDIALOG消息映射,并添加下列初始化代码:BOOL CStuInfoDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 设置单选按钮初始选中状态
if (!m_bMale)
CheckRadioButton(IDC_RADIO_MALE,IDC_RADIO_FEMALE,IDC_RADIO_FEMALE);
else
CheckRadioButton(IDC_RADIO_MALE, IDC_RADIO_FEMALE, IDC_RADIO_MALE);
// 这里对专业组合框进行初如化
m_tBirth = CTime(1986, 1, 1, 0, 0, 0); // 对出生年月初始化
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
(4)用MFC ClassWizard为单选按钮IDC_RADIO_MALE添加BN_CLICKED的消息映射,并增加下列代码:
void CStuInfoDlg::OnRadioMale()
{
m_bMale = TRUE;
}
(5)用MFC ClassWizard为单选按钮IDC_RADIO_FEMALE添加BN_CLICKED的消息映射,并增加下列代码:
void CStuInfoDlg::OnRadioFemale()
{
m_bMale = FALSE;
}
(6)用MFC ClassWizard为按钮IDOK添加BN_CLICKED的
消息映射,并增加下列代码:
void CStuInfoDlg::OnOK()
{
UpdateData();
m_strName.TrimLeft();
m_strNo.TrimLeft();
if (m_strName.IsEmpty())
MessageBox("必须要有姓名!");
else if (m_strNo.IsEmpty())
MessageBox("必须要有学号!");
else
CDialog::OnOK();
}
(1)打开Ex_Ctrl6SDI单文档应用程序的菜单资源,添加顶
层菜单项“测试(&T)”,在其下添加一个菜单项“学生基本
信息(&U)”,ID为ID_TEST_STUINFO。
(2)用MFC ClassWizard为CMainFrame类添加菜单项ID_TEST_STUINFO的COMMAND消息映射,取默认的映射函数。
并添加下列代码:
(3)在文件MainFrm.cpp的前面添加CStuInfoDlg类的头文件包含:
#include "MainFrm.h"
#include "StuInfoDlg.h“UpdateData();
m_strName.TrimLeft();
m_strNo.TrimLeft();
if (m_strName.IsEmpty())
MessageBox("必须要有姓名!");
else if (m_strNo.IsEmpty())
MessageBox("必须要有学号!");
else
(4) 编译运行并测试。