Использование таблицы свойств MFC Dialog приводит к ошибкам в VS 2017, работает на VS 2013 - PullRequest
0 голосов
/ 28 мая 2018

Имеется существующий проект Visual Studio 2017 MFC, в котором элементы управления становятся слишком плотными и сложными, чтобы добавить больше функциональности.

Я хотел использовать диалоговый интерфейс с вкладками для группировки и упрощения схемы управления.Нашел несколько полезных статей, подробно описывающих использование страниц свойств и листов, написанных для Visual Studio 2015.

Создал необходимый ресурс страницы свойств для двух вкладок для запуска и создал таблицу стилей в моем Aps '.cppфайл.Компилируется нормально, но выдает исключение времени выполнения при попытке создать диалоговое окно:

Необработанное исключение в 0x7786C54F в Utlities.exe: Microsoft C ++ исключение: CResourceException в расположении памяти 0x0040F430.

Окно стека не очень полезно для меня.

Сегмент кода:

CPropertySheet cSheet;
CConverter convTab; // class for first tab
CYield yieldTab;    // class for second tab
cSheet.AddPage(&convTab);
cSheet.AddPage(&yieldTab);
m_pMainWnd = &cSheet;
INT_PTR nResponse = cSheet.DoModal(); // Exception thrown here

Я заметил, что класс CPropertyPage был явно заменен на CMFCPropertyPage, поскольку CPropertyPage нетбольше перечислен как родительский класс в VS 2017.

Я думал, что это может быть несовместимо с CPropertySheet.Я обнаружил, что использование CMFCPropertySheet хорошо работает, но выдает ту же ошибку.Поэтому я просмотрел и вручную вывел свои страницы свойств из CPropertyPage, а также извлек лист из CPropertySheet.Та же ошибка.

По какой-то причине я запустил старый компьютер, на котором все еще была загружена Visual Studio 2013, и попытался сделать это, основываясь на CPropertySheet и CPropertyPages.Это работало просто отлично.

В недоумении, почему VS 2013 работает, а VS 2017 - нет.Не хотел бы понизить мою установку 2017 года до 2015 только для этого.

Есть идеи?

...