我最近从2005年到2010年升级了VC ++项目,除资源外,一切正常。我有一个2页的选项卡控件,所有对话框都在同一资源文件中,找到并显示TabControl,但页面都无法加载(常见的_AfxCheckDialogTemplate()错误。)
这很奇怪,因为所有对话框都在同一个文件中。我已将AfxSetResourceHandle()设置为正确的值。
我做了一些测试,结果如下: - 使用DoModal直接加载属性页:在第一个控件上的DDX_Text()上失败。 - 使用DoModal加载新创建的PPage:好的! - 在TabControl中加载相同的PPage:在AfxSetResourceHandle()上失败 - 在TabControl中加载新的PPage:也失败了。
如前所述,该项目只是从VS2005迁移而来,效果很好。 我还将主机从XP 32改为7 64位,但我猜pb更可能与VS中资源的处理方式有关。我记得已经有很多问题了,特别是如果你使用包含的公共资源。
关于现在尝试什么的任何想法? 在VS2010中是否存在TabControls的问题?我已经google了很多,但到目前为止还没有找到任何有趣的东西。 是否有另一种从VS2005项目迁移资源的方法?重新创建所有资源将会很长。 我应该简单地恢复到VS2005吗?
感谢您的任何提示,
阿兰
答案 0 :(得分:0)
也许迁移到64位会导致您的属性页上的一个或多个控件“失败创建”。通常,这应该由CPropertySheet :: Create()通过返回FALSE报告。如果到达WM_INITDIALOG处理程序,当您显示带有DoModal()的页面时,DDX_Control函数将失败,这意味着无法创建第一个控件,这是一个严重的错误。在MSDN中查找有关InitCommonControlsEx()的讨论,并查看应用程序是否正确调用它。
答案 1 :(得分:0)
Pb最终更正:创建了一个新的.rc文件,并通过拖放逐个复制所有资源。 似乎pb是从2005年到2010年的迁移失败(首先尝试在编辑器中打开资源甚至是不可能的!)。 这是一个非常古老的项目,首先从VC6迁移并包含包含的资源文件。也许VS不太擅长处理这个...... 感谢