Почему в MDI приложении, когда у дочернего окна стиль ...| WS_CAPTION | WS_SYSMENU, в Degug версии при закрытии окна вылетает Exception:
Debug Assertion Failed!
...atlctrlw.h...
Line 491
Expression::IsMenu(hMenu)
...
В Release все ок. Просто интересно, что ему не нравицо?
Здравствуйте, piAnd, Вы писали:
A>Почему в MDI приложении, когда у дочернего окна стиль ...| WS_CAPTION | WS_SYSMENU, в Degug версии при закрытии окна вылетает Exception:
A>A>Debug Assertion Failed!
A>...atlctrlw.h...
A>Line 491
A>Expression::IsMenu(hMenu)
A>...
A>
A>В Release все ок. Просто интересно, что ему не нравицо?
то, что при каких-то действиях в файле atlctrlw.h на линии 491 hMenu уже не является валидным хэндлом меню.
У меня там код CCommandBarCtrlImpl::AttachMenu. Но на 491 пусто. Че за версия WTL?
Здравствуйте, Константин Л., Вы писали:
КЛ>Че за версия WTL?
WTL Version 7.5 (build 5002) 1/2/05
КЛ>то, что при каких-то действиях в файле atlctrlw.h на линии 491 hMenu уже не является валидным хэндлом меню.
КЛ>У меня там код CCommandBarCtrlImpl::AttachMenu. Но на 491 пусто.
В том то и дело, что обычного меню у дочернего окна нет, а только стиль WS_SYSMENU.
И еще момент: вылет происходит в коде метода класса CCommandBarCtrlImpl, но в дочернем окне КоммандБара нет, но есть в родительском MDI-окне.
BOOL AttachMenu(HMENU hMenu)
{
ATLASSERT(::IsWindow(m_hWnd));
ATLASSERT(::IsMenu(hMenu));
if(hMenu != NULL && !::IsMenu(hMenu))
return FALSE;
// destroy old menu, if needed, and set new one
if(m_hMenu != NULL && (m_dwExtendedStyle & CBR_EX_SHAREMENU) == 0)
::DestroyMenu(m_hMenu);
... ... ...