C++ TabControl不与VS2010一起使用

C++ TabControl不与VS2010一起使用,c++,visual-studio-2010,mfc,resources,tabcontrol,C++,Visual Studio 2010,Mfc,Resources,Tabcontrol,我最近升级了一个VC++项目,从2005年升级到2010年,除了资源外,一切都很好。我有一个tab控件,有两个页面,所有对话框都在同一个资源文件中,tab控件被找到并显示,但是页面都无法加载(常见的_AfxCheckDialogTemplate()错误) 这很奇怪,因为所有对话框都在同一个文件中。我已将AfxSetResourceHandle()设置为正确的值 我做了一些测试,结果如下: -在第一个控件的DDX_Text()上,直接使用DoModal:加载属性页失败。 -用DoModal加载新创

我最近升级了一个VC++项目,从2005年升级到2010年,除了资源外,一切都很好。我有一个tab控件,有两个页面,所有对话框都在同一个资源文件中,tab控件被找到并显示,但是页面都无法加载(常见的_AfxCheckDialogTemplate()错误)

这很奇怪,因为所有对话框都在同一个文件中。我已将AfxSetResourceHandle()设置为正确的值

我做了一些测试,结果如下: -在第一个控件的DDX_Text()上,直接使用DoModal:加载属性页失败。 -用DoModal加载新创建的PPage:好! -在TabControl:中加载相同的PPage在AfxSetResourceHandle()上失败 -在TabControl:中加载新PPage也失败

如前所述,该项目只是从VS2005迁移而来,运行良好。 我还将我的主机从XP 32更改为7 64位,但我想pb更可能与VS中处理资源的方式有关。我记得在这方面已经有很多问题,特别是如果您使用包含的公共资源

你知道现在该试试什么吗? VS2010中的TabControl是否存在一些问题?我在谷歌上搜索了很多,但到目前为止没有发现任何有趣的东西。 是否有其他方法可以从VS2005项目迁移资源?重新创建所有资源需要相当长的时间。 我应该简单地回到VS2005吗

谢谢你的提示


Alain

可能迁移到64位导致属性页上的一个或多个控件“创建失败”。通常情况下,CPropertySheet::Create()应该通过返回FALSE来报告这一点。如果访问WM_INITDIALOG处理程序(在使用DoModal()显示页面时发生),DDX_控件函数将失败,这意味着无法创建第一个控件,这是一个严重错误。查看MSDN中关于InitCommonControlsEx()的讨论,看看应用程序是否正确调用了它

Pb最终更正:创建了一个新的.rc文件,并通过拖放一个接一个地复制了所有资源。 pb似乎认为从2005年到2010年的迁移失败了(在第一次尝试时,甚至不可能在编辑器中打开资源!)。 这是一个非常古老的项目,它首先从VC6迁移而来,并包含包含的资源文件。也许VS不太擅长处理这个。。。
谢谢

在我的项目中它丢失了,但是经过更正后,错误是一样的。但我测试了另一个非常相似的项目,相同的资源结构,运行良好。。。所以我想我只需要重新创建项目并导入资源。。。谢谢糟糕的是,您应该修改对话框,使其具有“无故障创建”样式。看看会发生什么。绕过te CDialog::OnInitDialog()内容(注释掉)。您可以看到哪些控件未能创建。成功!