在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鏈接:https://msdn.microsoft.com/en-us/library/windows/desktop/ms644903(v=vs.85).aspx )
所以比如如下的代碼,會彈出一次對話框。
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 // //////////////////////////////////////////////
} |