Код, который утверждает, является частью класса CHandleMap
MFC.MFC работает с окнами как CWnd
объектами, но Windows работает с ними как с HWND
ручками.карта дескриптора позволяет MFC «преобразовать» HWND
в указатель на объект MFC, представляющий этот объект.
Кажется, что утверждение делает проверку того, что когда поиск дескриптора находит объект MFC, что объект MFC также думает, что оборачивает один и тот же дескриптор.
Если они отличаются, то вы получите утверждение.
Таким образом, может показаться, что что-то портит карту дескриптора илиОбъект MFC для этого дескриптора, или вы делаете что-то неправильно, что приводит к несовпадению этих двух структур данных.
Некоторые вещи, которые вы можете сделать, чтобы попытаться отладить проблему, это определить:
- какой объект MFC находится в поиске (это то, на что указывает
pObject
) - то, что объект MFC считает обертывающим (это дескриптор
ph[0]
и / или ph[1]
- IЯ не уверен, почему их может быть 2) - для чего нужен дескриптор (это
h
)
Похожи ли дескрипторы на значения дескриптора или они выглядят какодеяниевозраст?pObject
указывает на что-то похожее на объект MFC или мусор?Кажется ли что-то из этого взаимосвязанным?
Ответы на эти вопросы могут указывать на то, что вам нужно делать дальше (может быть, установить точку останова для записи отладки для элемента, который выглядит так, как будто он удален).