Имеется существующий проект 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 только для этого.
Есть идеи?