Ошибка CWnd :: KillTimer, когда я запускаю два таймера с одинаковым интервалом времени в основном потоке - PullRequest
0 голосов
/ 23 мая 2018

Я не понимаю, как остановить таймер в приложении MFC.

Я одновременно использую SetTimer(2, 1000, NULL) и SetTimer(3, 1000, NULL) в заголовке приложения.И есть некоторые задачи по загрузке и загрузке между ними, и когда любой таймер (2 или 3) завершается, я просто вызываю CWnd::Killtimer(2) и CWnd::Killtimer(3) одновременно.

НО, даже если Killtimer преуспел, программапросто выполняет код, как будто таймер все еще установлен.Код состояния if(true == m_bIsRunning), находящийся в функции CWnd::OnTimer, завершается ошибкой, даже если m_bIsRunning фактически имеет значение false.

1 Ответ

0 голосов
/ 24 мая 2018

MSDN состояния (функция SetTimer):

Возвращаемое значение

Тип:

Тип: UINT_PTR

Если функция завершается успешно и параметр hWnd имеет значение NULL, возвращаемое значение представляет собой целое число, обозначающее новый таймер.Приложение может передать это значение в функцию KillTimer для уничтожения таймера.

Вы должны передать эти возвращенные значения вместо 2 и 3 в KillTimer ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...