| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Access Violation в ~CMSMask |
| Автор: 17dufa 8.12.2009, 18:08 |
| после вызова DoModal блок заканчивается и для не динамической переменной диалога вызывается деструктор. Я деструктор не переопределял. Базовый соответственно вызывает деструкторы потомков. При вызове ~CMSMask внутри BOOL CWnd::DestroyWindow() на строке bResult = m_pCtrlSite->DestroyControl(); получаю Access Violation. Копать остальной код на наличие неправильной работы с указателями? Или еще какие варианты есть? До последнего билда, в котором код диалога не правился подобного не было. |
| Автор: Earnest 9.12.2009, 15:41 |
| А все, конечно, должны знать, кто такой этот твой CMSMask. Вряд ли остальной код копать нужно. Скорее dcuj? у тебя что-то неправлиьно с логикой владения и ли времени жизни этого контрола. Вот туда и смотри. Начни со значения m_pCtrlSite - может, там уже усе порушено, вот и violation наступает... Может, он какой-нибудь delete this на PostNcDestroy вызывает? Можно еще поставить точку прерывания на деструктор контрола и посмотреть, а не дважды ли он приходит, и откуда... |
| Автор: 17dufa 10.12.2009, 13:28 |
| Earnest, CMSMask не мой. Это ActiveX контрол от Microsofta - Masked Edit Control. Добавлял его через Insert ActiveX Control. Никакого моего кода в деструкторе диалога нет, только мелкософтовский. По указанным точкам покопаюсь, как только смогу запустить программу (сейчас она вообще стала виснуть на входе |
| Автор: 17dufa 10.12.2009, 16:22 |
| вообщем необъяснимо появившись проблема необъяснимо ушла. видать неудачный check out сделал. сегодня пересобрал потщательнее последнюю версию, проблемы ушли. |