VC++ 时间日期控件控件程序编程步骤(P110)

合集下载

攻克VC软件开发 时间日期显示软件制作

攻克VC软件开发 时间日期显示软件制作

攻克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的用法 时间操作

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  日历控件使用

VC++编程技术连载---VC++日历控件使用2007-06-22 08:12:41VC++编程技术连载---VC++日历控件使用一、有关日历控件的介绍Win32 API提供了一个显示日期得当彩色日历控件,日期的显示模式是基于控制面板中的区域性设置或者说是依赖于用户的操作系统。

具体的日历控件如下图一所示:图一、日历控件显示效果这个常用的日历控件的标题条包含两个按钮和两个标签,左边的按钮准许用户单击选择前一个月份,左边的标签显示当前选择的月份,右边的标签显示当前日期中的年份。

右边的按钮是让用户选择下一个月份。

日历控件可以配置成显示多个月份,下图是一具体的实例:图二、显示多个月份的日历控件如果要让日历控件显示多个月份,按钮的个数将通过前月或后月列表来增加或减少。

例如,如果控件正在显示4月或5月,这时用户点击了左边的按钮,控件将显示3月或4月;如果用户点击了右边的按钮,控件将显示5月和6月。

此外,选择当前年份中的任意一个月份,用户可以点击标题框中的月份名,这时候将显示一个月份列表供用户来选择。

具体如图所示:图三、显示月份列表如果要更改年份,用户可以点击年份标签,这时候将显示旋转按钮,用户可以通过点击旋转按钮的上下键来更改年份,也可以使用键盘上的上下箭头来更改年份。

图四、更改日历控件的年份在标题条的下面,根据控制面板的格式显示着星期的简写,在英语地区,每个星期的第一天通常是星期天。

开发人员可以改变控件中的第一天设置。

控件上,当前选择的日期有一圆圈。

用户可以点击欲选择的日期来在控件上选择一个日期。

在大部分地区,日期以数字的形式显现在一个白色背景上(这个背景颜色乃至控件上的任何颜色可以通过程序来改变)。

默认的情况下,控件显示一个椭圆围绕的当前日期。

使用标题条按钮、月份和年份标签,用户可以更改日期。

如果控件显示的不是当前日期,用户可以通过点击控件底部显示今天日期的标签来使控件显示今天的日期。

(如果你是一个程序员,可以隐藏控件底部这个显示今日日期的标签)。

VC++数据库编程日期时间类变量的处理

VC++数据库编程日期时间类变量的处理

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时间编程

VC时间编程

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。

Visual C++自动时间显示代码

Visual C++自动时间显示代码

【例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}⑦编译运行。

vc编写一个模拟时钟的程序

vc编写一个模拟时钟的程序

pDC->MoveTo(rect.Width()/2,rect.Height()/2-16*(rect.Height()/2-10)/20);
pDC->LineTo(rect.Width()/2-15*(rect.Height()/2-10)/20,rect.Height()/2-6*(rect.Height()/2-10)/20);
pDC->SelectObject(&font1); //改变字体
pDC->SetBkColor(RGB(255,0,0));
pDC->TextOut(rect.Width()/2-0.2*(rect.Height()/2-10)/2,rect.Height()/2+0.2*(rect.Height()/2-10)/2,"REDOR1");
真不好意思,我的程序太大了4M多,因为里面还有其它功能.
没办法了.巾段程序吧.
void CFill_areaView::myShowColok(CDC *pDC)
{
m_time=CTime::GetCurrentTime();
pDC->FillRect(&CRect(0,0,rect.Width(),rect.Height()),&CBrush(RGB(100,100,100)));
CBrush brush(RGB(150,150,150));
CBrush *oldbrush=pDC->SelectObject(&brush);
CPen pen(PS_SOLID,3,RGB(0,0,0));
CPen *oldpen=pDC->SelectObject(&pen);

用VC++制作-模拟时钟应用程序

用VC++制作-模拟时钟应用程序

案例五模拟时钟应用程序以实例为背景学习基于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一次),如果采用全屏删除式重绘则闪烁十分明显,显示效果不佳。

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

本信息对话框来添加和修改学生基本信息,如图。

[例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) 编译运行并测试。

相关文档
最新文档