📄 timer3˵
字号:
1:利用COleDateTime类和COleDateTimeSpan类来实现秒级延时:
在程序需要延时的地方添加如下代码即可:
void CMulti_TimerDlg::OnButtonTime3()
{
COleDateTime start_time = COleDateTime::GetCurrentTime();
COleDateTimeSpan end_time = COleDateTime::GetCurrentTime()-start_time;
while(end_time.GetTotalSeconds() < 2) //实现延时2秒
{
end_time = COleDateTime::GetCurrentTime()-start_time;
}
}
2: 利用COleDateTime类和COleDateTimeSpan类来实现秒级定时器:
a:在头文件中自定义定时器时间到响应消息 #define WM_UPDATETIME1 WM_USER+1000
b:在头文件中声明WM_UPDATETIME1 消息的响应函数OnUpdateTime1()
//{{AFX_MSG(CMulti_TimerDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnButtonTime1();
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnButtonTime2();
afx_msg void OnButtonTime3();
afx_msg void OnButtonTime4();
afx_msg void OnButtonTime31();
afx_msg void OnButtonTime41();
afx_msg void OnButtonTime5();
afx_msg void OnButtonTime51();
afx_msg void OnButtonTime6();
afx_msg void OnButtonTime7();
afx_msg void OnButtonTime71();
afx_msg void OnButtonTime72();
afx_msg void OnButtonTime73();
afx_msg void OnAbout();
afx_msg void OnButtonTime61();
//}}AFX_MSG
void OnUpdateTime1();
DECLARE_MESSAGE_MAP()
c:在*.cpp文件中映射WM_UPDATETIME1 消息,并定义响应函数,其代码如下:
BEGIN_MESSAGE_MAP(CMulti_TimerDlg, CDialog)
//{{AFX_MSG_MAP(CMulti_TimerDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON_TIME1, OnButtonTime1)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTTON_TIME2, OnButtonTime2)
ON_BN_CLICKED(IDC_BUTTON_TIME3, OnButtonTime3)
ON_BN_CLICKED(IDC_BUTTON_TIME4, OnButtonTime4)
ON_BN_CLICKED(IDC_BUTTON_TIME3_1, OnButtonTime31)
ON_BN_CLICKED(IDC_BUTTON_TIME4_1, OnButtonTime41)
ON_BN_CLICKED(IDC_BUTTON_TIME5, OnButtonTime5)
ON_BN_CLICKED(IDC_BUTTON_TIME5_1, OnButtonTime51)
ON_BN_CLICKED(IDC_BUTTON_TIME6, OnButtonTime6)
ON_BN_CLICKED(IDC_BUTTON_TIME7, OnButtonTime7)
ON_BN_CLICKED(IDC_BUTTON_TIME7_1, OnButtonTime71)
ON_BN_CLICKED(IDC_BUTTON_TIME7_2, OnButtonTime72)
ON_BN_CLICKED(IDC_BUTTON_TIME7_3, OnButtonTime73)
ON_BN_CLICKED(IDC_ABOUT, OnAbout)
ON_BN_CLICKED(IDC_BUTTON_TIME6_1, OnButtonTime61)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_UPDATETIME1,OnUpdateTime1)
END_MESSAGE_MAP()
void CMulti_TimerDlg::OnUpdateTime1()//即添加定时时间到的处理操作
{
struct _timeb timebuffer;
char *timeline;
//获得毫秒级的时间
_ftime( &timebuffer );
timeline = ctime(&(timebuffer.time));
//格式化时间
m_strTime.Format("当前时间是:%.19s %s", timeline, &timeline[20]);
UpdateData(FALSE);
}
d:在*.cpp文件中定义一个线程函数,用来做定时器:
UINT ShowTime3_1_Proc(LPVOID lParam); //声明定时器函数
UINT ShowTime3_1_Proc(LPVOID lParam)
{
CMulti_TimerDlg* pDlg = (CMulti_TimerDlg*)lParam;
while(true)
{
COleDateTime Start_time = COleDateTime::GetCurrentTime();
COleDateTimeSpan End_time = COleDateTime::GetCurrentTime()-Start_time;
::SendMessage(pDlg->m_hWnd,WM_UPDATETIME1,0,0);
while(End_time.GetTotalSeconds()<1) //实现延时1秒
{
End_time = COleDateTime::GetCurrentTime()-Start_time;
}
}
return 0;
}
e:在需要的地方开启定时器:
void CMulti_TimerDlg::OnButtonTime31()
{
AfxBeginThread(ShowTime3_1_Proc,this);//开启定时器
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -