在Dialog中添加一个Timer。
用如下的代码停用一个Timer总是不好用:
void CDialog2::OnTimer (UINT TimerVal) { // // // Stop the timer // //
//MessageBox(TEXT("TIMER"), TEXT("IDT_TIMER_0"), MB_OK|MB_SYSTEMMODAL);
if (!::KillTimer(NULL,TimerVal)) { MessageBox(TEXT("Unable to stop timer"), TEXT("IDT_TIMER_0"), MB_OK|MB_SYSTEMMODAL); }
// // // Process the event //
//
// // // Restart the timer, if needed, before exiting // //
} |
弄了半天,发现用下面的代码就可以成功。
void CDialog2::OnTimer (UINT TimerVal) { // // // Stop the timer // //
//MessageBox(TEXT("TIMER"), TEXT("IDT_TIMER_0"), MB_OK|MB_SYSTEMMODAL);
if (!KillTimer(TimerVal)) { MessageBox(TEXT("Unable to stop timer"), TEXT("IDT_TIMER_0"), MB_OK|MB_SYSTEMMODAL); }
// // // Process the event //
//
// // // Restart the timer, if needed, before exiting // //
} |
另外根据MSDN, KillTimer对已经发到Message queue的Timer消息不能杀死。
(MSDN链接: )
所以比如如下的代码,会弹出一次对话框。
void CDialog2::OnTimer (UINT TimerVal) { // // // Stop the timer // //
//MessageBox(TEXT("TIMER"), TEXT("IDT_TIMER_0"), MB_OK|MB_SYSTEMMODAL);
if (!KillTimer(TimerVal)) { MessageBox(TEXT("Unable to stop timer"), TEXT("IDT_TIMER_0"), MB_OK|MB_SYSTEMMODAL); }
MessageBox(TEXT("timer here."), TEXT("IDT_TIMER_0"), MB_OK|MB_SYSTEMMODAL);
// // // Process the event //
//
// // // Restart the timer, if needed, before exiting // //
} |