Поиск:

Ответ в темуСоздание новой темы Создание опроса
> access violation при DoModal диалога 
:(
    Опции темы
Тутанхамец
Дата 22.9.2006, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

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



Господа, прошу помощи. В С++ я вообще-то не в зуб ногой, но вот надо делать в нем прогу. 
У меня диалоговое приложение. Я пишу в нажатии кнопки на первом диалоге:

Код

void CPdvDlg::OnButton2Click() 
{
    CSecondDlg md;
    md.DoModal;
            
}



Диалог About, сгенерированный автоматически, именно так вроде выводится. А у меня при нажатии кнопки лезет unhandled exception, access violation. Чё за дела?

PM MAIL   Вверх
Тутанхамец
Дата 22.9.2006, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

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



Если добавлять новый диалог командой Insert New Form, то всё работает. Уважаемые, а в чем разница? Что надо написать, чтобы мой диалог, добавленный через Insert Resource, нормально DoModal'ился? 
И еще. Куда надо вставить #include "MyDialog.h", чтобы MyDialog был виден из любого модуля?
PM MAIL   Вверх
Nuzur
Дата 22.9.2006, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: 3
Всего: 5



Цитата

Куда надо вставить #include "MyDialog.h", чтобы MyDialog был виден из любого модуля? 


stdafx.h
в но после всех рстальных инклудов! Но  я бы тебе советовал вставлять инклуд в каждом модуле где он нужен.

Цитата

Диалог About, сгенерированный автоматически, именно так вроде выводится. А у меня при нажатии кнопки лезет unhandled exception, access violation. Чё за дела?


Ты где-то в другом месте накосячил. А диалог "о программе..." вседа CAboutDlg и он действительно создается автоматически. И показать его

Код

    CAboutDlg dlg;
    dlg.DoModal();


А что у тя такое CSecondDlg я незнаю.

Это сообщение отредактировал(а) Nuzur - 22.9.2006, 15:42


--------------------
Never again...
PM MAIL   Вверх
Тутанхамец
Дата 22.9.2006, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

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



CSecondDlg появился так. Я нажал Inder - Resource, получил диалог, нарисовал контролы на форме и полез в MFC ClassWizard, а он при появлении спросил меня, не хочу ли я создать класс для этого диалога. Пожалуйста, развития моего ради, скажи, как мне отображать полученный таким образом диалог? И чем от него отличается диалог, вставленный через Insert - New Form?
PM MAIL   Вверх
Pulse69
Дата 22.9.2006, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 28.4.2006
Где: Хабаровск

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



Если ты создал просто диалог и пытаешься его отобразить, никаких ошибок происходить не должно. Может быть, у тебя есть обработчики в этом классе, которые вызывают ошибки?

Если я правильно тебя понял, то New Form от New Dialog очень сильно отличается.
В MFC проект можно добавить поддержку CLR, к которой относятся такие элементы управления .NET как формы ( такие замиксовки изврат, ИМХО, редкостный ). Если ты пишешь MFC-приложение без поддержки .NET и Managed Extensions ( например, сборки мусора ), эти формы лучше не использовать.
--------------------
Ctrl+Alt+Reset 
PM MAIL   Вверх
Тутанхамец
Дата 22.9.2006, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

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



Обработчиков там пока нет вовсе. А по поводу NET - так я в VC 6.0 маюсь. Мне кажется, при создании New Form среда где-то пишет какой-то дополнительный код, который нужен для нормальной работы класса-диалога. А если я создаю диалог вручную, то должен либо юзать API для его отображения, либо лично прописать что-то где-то. Но в генерённом средой коде мне с непривычки разобраться тяжеловато. smile Ладно, пожалуй, буду юзать диалоги через New Form. 

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


 




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


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

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