Вы должны использовать функцию KillTimer, но вам нужно быть осторожным только при выполнении таймера. Например, вы пишете код, как показано ниже,
#define TID_ONLY_ONCE WM_USER + 202
void CSampleDlg::OnTimer(UINT_PTR nIDEvent)
{
if(nIDEvent == TID_ONLY_ONCE)
{
KillTimer(TID_ONLY_ONCE);
SomethingLongProcess(pSomeData);
}
CDialog::OnTimer(nIDEvent);
}
Если вы установили истечения таймера в ближайшее время, хотя вы звоните KillTimer, «OnTimer()» будет выполняться несколько раз, потому что SomethingLongProcess требует длительного времени. Таким образом, чтобы избежать этого,
- Вызвать KillTimer() сразу после вызова SetTimer().
- Или используйте глобальный элемент bool. После вызова SetTimer глобальный член установил значение true, а затем в OnTimer(), проверьте это значение, будет ли выполняться SomethingLongProcess().
Надеюсь, это поможет вам немного.
Спасибо, используя глобальные работы bool. – l3utterfly