我有一个现有的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
替换了,因为在VS 2017中不再将CPropertyPage
列为父类。我认为它可能与CPropertySheet
不兼容。我发现使用CMFCPropertySheet编译无误,但产生相同的错误。所以我手动从CPropertyPage派生出我的属性页,并从CPropertySheet派生表。但是还是出现了同样的错误。我心血来潮打开一台仍安装有Visual Studio 2013的旧电脑,尝试从
CPropertySheet
和CPropertyPages
派生。这个办法很好用。我不知道为什么VS 2013可以正常工作,而VS 2017不能。不想只为此就将我的2017降级到2015。
有什么建议吗?
CPropertyPage
的类中。你只是确认你确实有对话框模板。应该有类似于page1.Construct(IDD_PAGE1);
的东西。*"调用堆栈窗口"* 也应该显示详细信息。 - Barmak Shemirani