Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 10.07.2018, 14:36   #1
erslgoeirjh
Форумчанин
 
Регистрация: 19.05.2009
Сообщений: 58
Репутация: 10
По умолчанию Не открываются диалоги в новой программе

У меня в старой программе (класс COldProgramDlg) были диалоги IDD_DIALOG1, IDD_DIALOG2,...,IDD_DIALOGN, которым соответствовали классы CDialog1, CDialog2,...,CDialogN.

Я создал новую программу, которой соответствует класс CNewProgramDlg. В неё я перетащил эти диалоги IDD_DIALOG1, IDD_DIALOG2,...,IDD_DIALOGN и соответствующие им классы CDialog1, CDialog2,...,CDialogN.
И эти диалоги у меня при вызове их функций DoModal из класса CNewProgramDlg не открываются--программа бьётся при их открытии. При этом в отладчике либо не выскакивает никаких сообщений вообще, либо выскакивает сообщение:

Цитата:
Debug Assertion Failed!
Program: C:\Windows\system32\mfc100d.dll
File: f:\dd\vctools\vc7libs\ship\atlmfc\s rc\mfc\dlgdata.cpp
В чём причина этого? Как сделать так, чтобы эти диалоги открывались в новой программе?
erslgoeirjh вне форума   Ответить с цитированием
Старый 10.07.2018, 14:42   #2
erslgoeirjh
Форумчанин
 
Регистрация: 19.05.2009
Сообщений: 58
Репутация: 10
По умолчанию

P.S. Среда разработки--Visual Studio 2012.
erslgoeirjh вне форума   Ответить с цитированием
Старый 10.07.2018, 14:46   #3
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,058
Репутация: 2054

icq: 216409213
По умолчанию

А айдишники в файл ресурсов добавили?
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Старый 10.07.2018, 17:55   #4
erslgoeirjh
Форумчанин
 
Регистрация: 19.05.2009
Сообщений: 58
Репутация: 10
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
А айдишники в файл ресурсов добавили?
Да, добавил.
erslgoeirjh вне форума   Ответить с цитированием
Старый 10.07.2018, 18:01   #5
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,058
Репутация: 2054

icq: 216409213
По умолчанию

Какой номер строки в ошибке? Перейдите на него и посмотрите, что там за условие.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Старый 13.07.2018, 09:42   #6
erslgoeirjh
Форумчанин
 
Регистрация: 19.05.2009
Сообщений: 58
Репутация: 10
По умолчанию

Такой вот вопрос.
Есть диалоговое приложение Visual C++ (среда разработки Visual Studio 2012), в котором существует главный класс диалога CMainDialog. В этом диалоге находится кнопка IDC_BUTTON1, которой соответствует переменная CButton1 в классе CMainDialog. При нажатии на эту кнопку вызывается диалог IDD_DIALOG1, которому соответствует класс CDialog1 , то есть:

Код:

void  CMainDialog::OnBn1ButtonClicked
{
    CDialog1  dialog1(this);
    dialog1.DoModal();
}

Диалог IDD_DIALOG1 нормально, без всяких проблем появляется на экране.
Но вот я решил создать ещё один диалог--IDD_DIALOG2, которому соответствует класс CDialog2, который должен вызываться по нажатию кнопки IDC_BUTTON2, которой соответствует переменная в классе CDialog1:

Код:

void  CDialog1::OnBn2ButtonClicked
{
    CDialog2  dialog2(this);
    dialog2.DOModal();
}

И в отладчике вместо появления диалога IDD_DIALOG2 попадаем сперва в файл dbgrptt.c на функцию _CrtDebugBreak:

Код:

_CRTIMP void __cdecl _CrtDbgBreak(
                                  void
                                  )
{
    __debugbreak;
}

а после, при нажатии на кнопку "Продолжить" в выскочившем окне отладчика--на файл dlgcore.cpp, на функцию CDialog::PreModal :

Код:

HWND  CDIalog:;PreModal()
{
    ASSERT(m_hWnd==NULL);
    CWinApp  pApp = AfxApp();
    if (pApp!=NULL)
        pApp->EnableModeless(FALSE);
    HWND  nWnd = CWnd:;GetSafeOwner_(m_pParent->GetSafeHwnd(),&m_hWndTop);
    AfxHookWindowCreate(this);
    return hWnd;
}

После этого, при нажатии на кнопку "Продолжить", попадаем ещё на какой-то файл и так далее.

В чём причина этого? Как сделать так, чтобы из диалога CDialog1 вызывался диалог CDialog2--то есть чтобы нормально появлялось диалоговое окно класса CDialog2 ?
erslgoeirjh вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Яндекс диалоги Ципихович Эндрю Свободное общение 0 23.06.2018 18:48
Формы и диалоги QT Pavia Qt и кроссплатформенное программирование С/С++ 1 08.08.2016 12:51
А можно ли в макросе подавить ненужные диалоги? vpm Microsoft Office Excel 2 14.11.2012 13:56
[WPF] OpenFileDialog и прочие диалоги. Casper-SC Общие вопросы .NET 0 11.06.2010 11:54
Диалоги открыть/закрыть файл Altera Операционные системы общие вопросы 3 03.12.2008 02:18


18:15.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru