首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MFC对话框属性表的使用在VS 2017中产生错误,在VS 2013上工作

MFC对话框属性表的使用在VS 2017中产生错误,在VS 2013上工作
EN

Stack Overflow用户
提问于 2018-05-28 03:52:21
回答 1查看 1.2K关注 0票数 3

有一个现有的Visual Studio 2017 MFC对话框应用程序项目,其中的控件变得过于密集和复杂,无法添加更多功能。

我想使用一个选项卡式对话框接口对控件布局进行分组和简化。找到一些有用的文章,详细介绍为Visual 2015编写的属性页和工作表的使用情况。

为启动两个选项卡创建所需的属性页资源,并在我的.cpp文件中创建样式表。编译良好,但在尝试创建对话框时生成运行时异常:

Utlities.exe中0x7786C54F处的未处理异常: C++异常:内存位置为0x0040F430的CResourceException。

堆栈窗口对我没有多大帮助。

代码段:

代码语言:javascript
复制
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 2013,并通过从CPropertySheetCPropertyPages派生的方法进行了尝试。效果很好。

不知道VS 2013有什么用,但是VS 2017没有用。我不愿意仅仅因为这个把我2017年的安装降级到2015年。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2020-02-11 11:37:33

有同样的问题,但设法解决了它。我现在在2017年。

我的主要代码:

代码语言:javascript
复制
CMFCPropertySheet sheet;
CWizardPage1 page1; // class derived from MFCPropertyPage
CWizardPage2 page2; // class derived from MFCPropertyPage

sheet.AddPage(&page1);
sheet.AddPage(&page2);

sheet.DoModal();

这会将相同的CResourceException抛到sheet.DoModal()上。

为了使其正常工作,我更改了CWizardPage1构造函数(与CWizardPage2类似)。

构造函数,该构造函数导致异常:

代码语言:javascript
复制
CWizardPage1::CWizardPage1()
{
}

构造函数,它不会导致异常:

代码语言:javascript
复制
CWizardPage1::CWizardPage1()
    : CMFCPropertyPage(IDD_WIZARD_PAGE1)
{
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50558880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档