Сообщение Re: Перестал компилироваться проект от 24.10.2017 13:54
Изменено 24.10.2017 14:09 Evgeniy Skvortsov
Re: Перестал компилироваться проект
Здравствуйте, sushko, Вы писали:
S>Что я мог сломать в VS?
У меня такое ощущение, что сломалось что-то в MFC, так как падает такой простейший код:
При чем если заменить динамическое создание диалога на:
То всё прекрасно работает.
Почему падает, я так и не понял, прошелся отладчиком внутрь DoModal(), там вызывается PreModal()
и первой строкой этой функции стоит ASSERT(m_hWnd == NULL), на ней и падает. В чем причина — мне пока неясно.
Добавлено:
В общем как оказалось не нужно вызывать Create(), он теперь автоматов зовется из конструктора.
ТО есть меняем код на:
И все прекрасно работает.
S>Что я мог сломать в VS?
У меня такое ощущение, что сломалось что-то в MFC, так как падает такой простейший код:
CMFCApplication1Dlg *dlg = new CMFCApplication1Dlg();
dlg->Create(IDD_MFCAPPLICATION1_DIALOG);
m_pMainWnd = dlg;
INT_PTR nResponse = dlg->DoModal();
При чем если заменить динамическое создание диалога на:
CMFCApplication1Dlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
То всё прекрасно работает.
Почему падает, я так и не понял, прошелся отладчиком внутрь DoModal(), там вызывается PreModal()
и первой строкой этой функции стоит ASSERT(m_hWnd == NULL), на ней и падает. В чем причина — мне пока неясно.
Добавлено:
В общем как оказалось не нужно вызывать Create(), он теперь автоматов зовется из конструктора.
ТО есть меняем код на:
CMFCApplication1Dlg *dlg = new CMFCApplication1Dlg();
INT_PTR nResponse = dlg->DoModal();
И все прекрасно работает.
Re: Перестал компилироваться проект
Здравствуйте, sushko, Вы писали:
S>Что я мог сломать в VS?
У меня такое ощущение, что сломалось что-то в MFC, так как падает такой простейший код:
При чем если заменить динамическое создание диалога на:
То всё прекрасно работает.
Почему падает, я так и не понял, прошелся отладчиком внутрь DoModal(), там вызывается PreModal()
и первой строкой этой функции стоит ASSERT(m_hWnd == NULL), на ней и падает. В чем причина — мне пока неясно.
Добавлено:
В общем как оказалось не нужно вызывать Create(), он теперь автоматов зовется из конструктора.
ТО есть меняем код на:
И все прекрасно работает.
Судя по всему что-то наменяли в логике работы MFC и теперь для вызова DoModal() — не нужно звать Create()
Какого-то объяснения пока не обнаружил.
S>Что я мог сломать в VS?
У меня такое ощущение, что сломалось что-то в MFC, так как падает такой простейший код:
CMFCApplication1Dlg *dlg = new CMFCApplication1Dlg();
dlg->Create(IDD_MFCAPPLICATION1_DIALOG);
m_pMainWnd = dlg;
INT_PTR nResponse = dlg->DoModal();
При чем если заменить динамическое создание диалога на:
CMFCApplication1Dlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
То всё прекрасно работает.
Почему падает, я так и не понял, прошелся отладчиком внутрь DoModal(), там вызывается PreModal()
и первой строкой этой функции стоит ASSERT(m_hWnd == NULL), на ней и падает. В чем причина — мне пока неясно.
Добавлено:
В общем как оказалось не нужно вызывать Create(), он теперь автоматов зовется из конструктора.
ТО есть меняем код на:
CMFCApplication1Dlg *dlg = new CMFCApplication1Dlg();
INT_PTR nResponse = dlg->DoModal();
И все прекрасно работает.
Судя по всему что-то наменяли в логике работы MFC и теперь для вызова DoModal() — не нужно звать Create()
Какого-то объяснения пока не обнаружил.