Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

MFC "Out of memory"

20K
20 марта 2007 года
Galo4ka
13 / / 12.03.2007
Возникла неожиданная проблема.
Есть диалоговое приложение. По нажатию на кнопку динамически создается еще одно диалоговое окно. В этом окне я редактором ресурсов добавила пару кнопок. Если в хэдере описать CButton button_VS, button_LMAXM; , а в .cpp привязать
DDX_Control(pDX, IDC_RADIO_VS, button_VS);
DDX_Control(pDX, IDC_RADIO_LMAXM, button_LMAXM);
то при создании окна, а именно внутри вызова Create(..) оно зацикливается где-то.. и потом выдает "Out of memory".

Но!! если описать и связать ТОЛЬКО ОДНУ из кнопок, но все замечательно работает.

Не поможете, плз??
320
20 марта 2007 года
m_Valery
1.0K / / 08.01.2007
Выложи код(папку Debug удали).
320
20 марта 2007 года
m_Valery
1.0K / / 08.01.2007
Если добавлен класс нового диалога,в ресурсах есть новое диалоговое
окно,то в обработчике нажатия кнопки не надо вызывать
Create.Допустим класс MyDialog(новый диалог).В класс главного диалога
добавляешь переменную MyDialog d, а обработчике кнопки
d.DoModal();
и все работает.:)
20K
20 марта 2007 года
Galo4ka
13 / / 12.03.2007
Цитата: m_Valery
Если добавлен класс нового диалога,в ресурсах есть новое диалоговое
окно,то в обработчике нажатия кнопки не надо вызывать
Create.Допустим класс MyDialog(новый диалог).В класс главного диалога
добавляешь переменную MyDialog d, а обработчике кнопки
d.DoModal();
и все работает.:)



не =) там приходится это дело создавать с помощью new, но это не важно.
если статически, то так и делаю. пасиб.

20K
20 марта 2007 года
Galo4ka
13 / / 12.03.2007
Спасибо за совет!! я скопировала все это дело.. обнаружила невесть откуда взявшуюся папку Release, в которой тоже сидел exe-шник, удалила ее.. и все заработало. Прошу прощения за шум. *никак не привыкну у подобным шуткам в винде*
еще раз спасибо.
320
20 марта 2007 года
m_Valery
1.0K / / 08.01.2007
Если при помощи new , тогда добавляешь в класс главн.диалога
 
Код:
MyDialog *d;

В OnInitDialog пишешь
 
Код:
d = new MyDialog(this);

в обработчике кнопки пишешь
 
Код:
d->DoModal();

То же самое.
20K
20 марта 2007 года
Galo4ka
13 / / 12.03.2007
о как. здорово.
а для чего тогда вообще Create(....)??

или можно что-нить вроде
CDialog *d;
d = new CDialog;
d->Create(IDD_DIALOG_SELECT,NULL);
d->ShowWindow(SW_SHOW);

ы. это работает.. можно, значит.
но все-таки, зачем 2 варианта??
чтоб не создавать отдельный класс для диалога, если не надо??
320
20 марта 2007 года
m_Valery
1.0K / / 08.01.2007
 
Код:
BOOL Create( LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL );
BOOL Create( UINT nIDTemplate, CWnd* pParentWnd = NULL );

Обе формы этой функции создают немодальный диалог на основе
шаблона, который находится в файле ресурсов.
 
Код:
virtual int DoModal( );
Показывает на экран модальный диалог. Программа не выходит из данной функции до тех пор пока диалог не закрыт.Попробуй 2 варианта и увидишь в чем разница.
20K
20 марта 2007 года
Galo4ka
13 / / 12.03.2007
Спасиб, оценила.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог