settimer ontimer 主要是定时器 和定时器的响应
想要使用两个函数
第一步:注册函数 和 事件触发 设置
afx_msg void CDeskTopDlg::OnTimer(UINT_PTR nIDEvent) ;//注册函数
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
ON_WM_SIZE()
#endif
//}}AFX_MSG_MAP
ON_WM_TIMER() //事件设置
ON_BN_CLICKED(IDC_BUTTON1, &CDeskTopDlg::OnBnClickedButton1)
END_MESSAGE_MAP()
第二步: 设置定时时间
在CDeskTopDlg::OnInitDialog()
SetTimer(1,1000,NULL); //1为事件号i;1000 为定时时间 单位 MS
第三步:响应函数ontimer
void CDeskTopDlg::OnTimer(UINT_PTR nIDEvent)
{
SYSTEMTIME Time;
//获取系统时间类
GetLocalTime(&Time);
//获取本地时间
CString TimeString;
//转换
CString temp,temp1,temp2,str1,str2;
TimeString.Format(_T("%4d-%2d-%2d %2d:%2d:%2d")
,Time.wYear
,Time.wMonth
,Time.wDay
,Time.wHour
,Time.wMinute
,Time.wSecond);
UpdateData(TRUE); //刷新数据
GetDlgItem(IDC_EDIT3)->SetWindowText(TimeString);
UpdateData(FALSE);
CDialog::OnTimer(nIDEvent);
}
第四步:取消WM_TIMER 消息 KillTimer
void CPowerDownDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
// Do not call CDialog::OnPaint() for painting messages
static BOOL bFlag = TRUE;
if (bFlag==TRUE)
{
BitBlt(dc, 0, 0, 480, 800, dcMem, 0, 0, SRCCOPY);
m_DlgTime = NULL;
m_DlgTime = new Time;
m_DlgTime->Create(IDD_DIALOG1);
m_DlgTime->ShowWindow(SW_SHOW);
DeleteObject(dcMem);
bFlag = FALSE;
}
else
KillTimer(1);
}