Действительно ли необходим KillTimer? - PullRequest
5 голосов
/ 04 декабря 2011

Это может показаться дублирующим вопросом для Нужен ли KillTimer? , но я хотел бы подтвердить это с помощью достоверного источника .

Действительно ли уничтожает окно?освободить ресурс, выделенный ОС для таймера?(действительно ли вызывается DestroyWindowsTimers, не говоря уже о том, существует ли такая функция? Если да, то где?)

Ответы [ 2 ]

6 голосов
/ 04 декабря 2011

Нет, это не обязательно. Из документации DestroyWindow (с добавлением акцента):

Функция отправляет WM_DESTROY и WM_NCDESTROY сообщения в окно, чтобы деактивировать его и убрать фокус клавиатуры. Функция также уничтожает меню окна, очищает очередь сообщений потока, уничтожает таймеры , удаляет владельца буфера обмена и разрывает цепочку просмотра буфера обмена (если окно находится в верхней части цепочки просмотра).

2 голосов
/ 04 декабря 2011

При поиске в Google единственной действительной ссылкой на него, похоже, был какой-то исходный код Win2k.URL закончился на /Censorship/win2k_sources/private/.../timers.c, я предполагаю, что из-за утечки исходного кода некоторое время назад.Я не смотрел на код и не буду публиковать здесь ссылку.

Эта функция, скорее всего, существует - что-то подобное почти должно существовать для таймеров, связанных с дескрипторами окна - поскольку сообщение таймера доставляетсяспецифический дескриптор окна.

Я не вижу нигде в документации, где говорится, что вам не нужно вызывать KillTimer, чтобы избавиться от таймера.Поэтому на основании задокументированного договора вам нужно позвонить KillTimer.На практике Windows, вероятно, очистит его для вас, но поскольку это недокументированное поведение, вы должны написать свой код, чтобы следовать задокументированному поведению, и вызвать KillTimer на всех ваших таймерах.

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