Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка hwnd = 0 в AfxWndProc, падает VB при отладке MFC Active X. 
:(
    Опции темы
Euclid
Дата 9.11.2004, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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?


PM MAIL   Вверх
bel_nikita
Дата 10.11.2004, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 2
Всего: 47



Цитата
Что это? Моя ошибка или MFC?
Ага, этов все проделки Билла smile .
А почему бы так не попробывать:
Код

class CMaaa : public COleControl
{
public:
CMaaa();
Cmyclass  m_pCmyclss;
….
}

т.е. статическим связыванием


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
shedon
Дата 10.11.2004, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

Репутация: нет
Всего: 11



Euclid
а где ты удаляешь m_pCmyclss ?


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
Euclid
Дата 10.11.2004, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 26.10.2004

Репутация: нет
Всего: 1



Спасибо!
Я часа через два, после того как вопрос задал, сам понял что ляп допустил.
Нигде не удаляю.
И все-таки непонятно, почему именно HWND = 0?
Если никто не удаляет, то должна быть утечка памяти. Окна дочерние вроде бы должны нормально уничтожиться?

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0847 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.