前言:虽然早已下决心不再碰微软的东西,但手头的项目还得需要维护。遇到问题还能解决。
问题由来:
之前的软件开发是基于中文环境开发的,建立项目的时候,选择了中文,为了方便客户使用,我们使用了静态编译的方法,这样用户用我们的软件就不用费尽心思的去装微软的库了,如此以来,像诸如调用“打印预览”功能时,界面上显示的是 “打印”, “下一页”等全部是中文。后期需要做成其他语言的版本。我们自己开发的对话框全是以语言文件的格式来存放的,只需替换语言文件而不需要修改程序就可实现。只是像系统提供的一些对话框比如“打印预览”界面,就无能为力了。先前认为,只要到了英文的操作系统下,那些语言就自动变成了英文,直到客户反馈过来之后,我们才发现,我们错了。到英文的操作系统下,还是中文的。重要原因是我们采用了静态编译,但这种编译方式又不能取消。将软件运行所需要的库打包给用户,现在的操作系统百花齐放,风险也蛮大。刚好手头的事情告一段落,产品经理又找到我想新增一个葡萄牙文的,刚好就琢磨琢磨这件事情。
也在一番无谓的尝试之后,打开工程下的*.rc资源文件。真是淘到宝了。在文件中发现
"#include ""l.CHS\\afxres.rc"" // 标准组件\r\n"
"#include ""l.CHS\\afxprint.rc"" // 打印/打印预览资源\r\n"
#include "l.CHS\afxres.rc" // 标准组件
#include "l.CHS\afxprint.rc" // 打印/打印预览资源
既然是打印/打印预览资源,那就去看看到底是什么玩意吧。在VC2010安装目录下搜索,发现了好几个这样的文件如下图:
最近刚刚解决了linux环境下中文字符的问题,所以对CHS还是比较敏感的,那不就是中文的意思嘛,其他几个,不用问肯定是别的语言了,第一个灭有语言表示的,其实就是英文,谁让vc是美国佬开发的呢。拷贝出l.chs下的afxprint.rc看看,发现了如下图:
修改项目工程下的*.res,使其指向对应的文件,就ok了。
解决这个问题的经验就是,做的久了,对问题有一定的敏感性。先是用 打印预览的ids搜索整个工程,一一浏览,结果在.res发现端倪。如果你不知道afxres.rc是干嘛用的,去中文目录下拷贝一个看看吧,多动手才能提高。
版权声明:本文为博主原创文章,未经博主允许不得转载。
如何修改 VC6.0 4.0 2010 打印预览界面上的文字
原文地址:http://blog.csdn.net/wjcapple/article/details/46726863