Debug exception
От: piAnd Россия  
Дата: 18.04.06 13:21
Оценка:
Почему в MDI приложении, когда у дочернего окна стиль ...| WS_CAPTION | WS_SYSMENU, в Degug версии при закрытии окна вылетает Exception:

Debug Assertion Failed!
...atlctrlw.h...
Line 491
Expression::IsMenu(hMenu)
...


В Release все ок. Просто интересно, что ему не нравицо?
Re: Debug exception
От: Константин Л. Франция  
Дата: 18.04.06 16:48
Оценка:
Здравствуйте, 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?
Re[2]: Debug exception
От: piAnd Россия  
Дата: 18.04.06 17:54
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>Че за версия 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);
... ... ...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.