![]() |
|
|
![]()
|
|
| torero |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 177 Регистрация: 1.2.2006 Репутация: нет Всего: нет |
У меня простой пример для вопроса. Проект CProba на основе CView.
В CProbaView::OnCreate ставлю операторы: CWnd* pWnd = new CWnd; pWnd->Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE, CRect(0, 0, 20, 20), this, 1234); Получается маленькое окно, всё работает правильно. Но теперь при помощи ClassWizard создаю новый класс CProbaOkno произ- водный от CWnd, в нём пишу функцию Sozd() c теми же операторами: void CProbaOkno::Sozd() { CWnd* pWnd = new CWnd; pWnd->Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE, CRect(0, 0, 20, 20), this, 1234); } А в CProbaView::OnCreate() прежние операторы удалил и пишу: CProbaOkno pok; pok.Sozd(); Получаю два сообщения: 1. Окно создаётся с ошибкой. 2. Обнаружена утечка памяти. В чём может быть причина? |
|||
|
||||
| xTr1m |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: нет Всего: 1 |
ну утечка, скорее всего, тут
ты ведь выделил память, так сам ее и очищай насчет ошибки, так сказать не могу. Хоть на какой строчке ошибка вылетает? |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 7 Всего: 92 |
Не надо создавать Sozd. Перегрузи Create, если не хочешь много параметров - сделай один - CWnd* parent.
wnd добав как private-переменную типа CWnd в COkno |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Здесь "this" - это несуществующее окно. Отсюда и ошибка. Добавлено @ 18:06 Наверное, все же имелось в виду, что надо вставить контрол типа CProbaOkno во вью. Тогда нужно добавить переменную типа CProbaOkno в класс вью, а то создается, понимаешь, автоматическая переменная... она ведь сразу разрушится. Это сообщение отредактировал(а) Earnest - 20.10.2006, 18:08 -------------------- ... |
|||
|
||||
| torero |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 177 Регистрация: 1.2.2006 Репутация: нет Всего: нет |
Переменные CProbaOkno pok и
CWnd *parent завёл и сделал обращение в CProbaView::OnCreate { pok.Create(parent); } , но ошибка трансляции в вызове базового метода CWnd::Create(); 'Create' : function does not take 0 parameters пока не поставил все 6 параметров. После этого программа отработала, но окно не построила и дала сообщение на каждый Create : Warning: Window creation failed: GetLastError returns 0x00000000 Warning: Window creation failed: GetLastError returns 0x00000000 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |