![]() |
|
![]() ![]() ![]() |
|
Euclid |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 26.10.2004 Репутация: нет Всего: 1 |
Делаю компоненет Active X в MFC. Примерно так: в простом EXE отладил класс Cmyclass { .... BOOL Create(const RECT& rect, CWnd* parent); .... } потом в проекте MFC Active X делаю код class CMaaa : public COleControl { public: CMaaa(); Cmyclass * m_pCmyclss; …. } И в процедуре CMaaa::OnCreate(LPCREATESTRUCT lpCreateStruct) вызываю m_pCmyclss = new Cmyclass; CRect rect; GetClientRect(rect); m_pCmyclss ->Create(rect, this); то есть родитель окна моего класса – сам контрол ( !?? так ли это ? ) пока контрол больше ничего не делает В VB 6.0 в форму кладу контрол И почти всегда при закрытии VB а иногда и раньше VB падает. Удается увидеть, что падает в cmdtarg.cpp line 52 или раньше в wincore.cpp line 365. В wincore.cpp line 365 выполняется проверка AfxWndProc(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam) { // special message which identifies the window as using AfxWndProc if (nMsg == WM_QUERYAFXWNDPROC) return 1; // all other messages route through message map CWnd* pWnd = CWnd::FromHandlePermanent(hWnd); ASSERT(pWnd != NULL); -------- это и есть line 365 !!!!!!! ASSERT(pWnd->m_hWnd == hWnd); return AfxCallWndProc(pWnd, hWnd, nMsg, wParam, lParam); } Что это? Моя ошибка или MFC? |
|||
|
||||
bel_nikita |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 2 Всего: 47 |
![]() А почему бы так не попробывать:
т.е. статическим связыванием |
||||
|
|||||
shedon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1209 Регистрация: 17.1.2003 Где: Нижнiй Новгородъ Репутация: нет Всего: 11 |
Euclid
а где ты удаляешь m_pCmyclss ? -------------------- Programming is like sex: One mistake and you have to support it your lifetime |
|||
|
||||
Euclid |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 26.10.2004 Репутация: нет Всего: 1 |
Спасибо!
Я часа через два, после того как вопрос задал, сам понял что ляп допустил. Нигде не удаляю. И все-таки непонятно, почему именно HWND = 0? Если никто не удаляет, то должна быть утечка памяти. Окна дочерние вроде бы должны нормально уничтожиться? |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |