2013-10-08 2 views
0

У меня есть окно, которое создано, и в какой-то момент вызывается OnDestroy(), без щелчка пользователем кнопки «Закрыть» или «X», которая закрывает окно.В каких случаях может быть вызван afx_msg void OnDestroy() aka CWnd: OnDestroy()?

Какие другие операции/действия/вещи могут вызвать эту функцию и почему?

документации Microsoft бесполезен как обычно:

http://msdn.microsoft.com/en-us/library/vstudio/2eahe3wf.aspx

+0

Окна для детей, удаляющие данные внутри CWnd (я предполагаю, что есть какой-то указатель на него) и в буфер обмена. Я не испытываю этого, но это мои догадки: -/ –

+0

Спасибо, но, к сожалению, для этого модального диалога нет дочерних окон, так как это одинокий ребенок для его родителя. Нет явного удаления каких-либо данных внутри CWnd, и буфер обмена не используется. –

+0

@BrainTHannan есть ли какое-либо событие, происходящее в родительском окне, которое может повлиять на проблемное дочернее окно? –

ответ

0

Это не задокументированы, потому что список будет довольно долго. Например, общей причиной является нажатие Alt-F4. В конце концов, это отправляет то же сообщение WM_CLOSE. Фактически, все, что отправляет WM_CLOSE в ваше окно, вызовет это.

Существует также выключение приложения, возможно, из-за выключения компьютера или из-за того, что пользователь выходит из системы.

+0

Спасибо, но, к сожалению, этого не происходит. Он пытается обработать некоторые данные в списке в модальном окне. В какой-то момент он попадает в ловушку, а аварийный сброс указывает на функцию OnDestroy(). Может ли исключение или что-то подобное вызвать эту функцию? –

Смежные вопросы