![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 5 Всего: 44 |
Такая проблема. Хочу (по ряду причин) в качестве главного окна программы сделать диалог, только не модальный.
Что творю: 1. Создаю свой класс от CDialog, и в конструкторе вызываю Create(ресурс). 2. В этом же классе по нажатию одной из кнопок делаю DistroyWindow() 3. В классе приложения в InitInstance пишу: m_pMainWnd=new CMyDlg; (*) m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); 4. В ExitInstance делаю delete m_pMainWnd. Все работает. Но дает утечку памяти в строке (*). В чем проблема, ума не приложу. может кто подскажет? -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| RAN |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Вот за это я не люблю кошек
Короче такая фигня, вот этого делать нельзя:
Удалять объект надо в методе PostNcDestroy.
Теперь, чтоб очистить память и удалить диалог надо вызвать его метод CMyDlg::DestoyWindow(). Что у тебя уже сделано:
И ещё. Не знаю известно ли тебе, но CDialog::EndDialog() не удаляет немодальный диалог, он его только скрывает. Поэтому надо переписать обработчики OnOK и OnCancel.
Удачи. |
||||||||
|
|||||||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |