docsingl.cpp line210文件中的ENSURE(strDocName.LoadString(AFX_IDS_UNTITLED))错误

vc6.0的程序,迁移到了vs2008,编译没有问题,但是在debug模式下,运行会报错,release模式下没问题。然后就问万能的谷哥和度娘,查找了很多文章,不过大部分都是互相抄来抄去,我结合两篇文章的指导,排除了这个问题,贴出来备查。

这个问题是资源引起的问题,据说是由于建立工程时选择了其他语言,后来又修改成中文,所以会有这个问题。我的工程里面查看了一下,有中文,英文,还有莫名奇妙的意大利文。我新建了一个中文的工程,然后对照两者的不同,进行修改。

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE 4, 2
#pragma code_page(936)
#endif //_WIN32

查找AFX_RESOURCE_DLL,大概会发现4-5处内容,然后注意红色字的部分,其他的地方格式不太一样,但是修改的内容是一样的

LANGUAGE 4, 2也可以写成LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED

如果用宏,看起来会比较直观,不过vs2008里面,默认用的是数字。

这样修改完以后,发现问题依旧,继续搜索

#include "res\XXX.rc2"  // 非 Microsoft Visual C++ 编辑的资源 

是这里出问题了,由于包含的顺序问题,导致语言的问题,具体的我也说不清,详情可查看参考文章

#include "res\XXX.rc2"  // 非 Microsoft Visual C++ 编辑的资源

#include "afxres.rc"         // 标准组件

#include "afxprint.rc"       // 打印/打印预览资源

改成

#include "afxres.rc"         // 标准组件

#include "afxprint.rc"       // 打印/打印预览资源

#include "res\XXX.rc2"  // 非 Microsoft Visual C++ 编辑的资源

就可以了,其实就是调整了一下顺序,到此,问题解决

参考文章:http://www.wuroom.com/post/116/

http://www.codelast.com/?p=1888

原文地址:https://www.cnblogs.com/junyuz/p/3105662.html