关于vs2010下 vc的支持多国语言 在win7和xp下的问题




这两天给公司做产品的安装工程 用正版installshield2009.操作系统windos7(64bit)


出现了几个问题再次一一列举以备日后参考


问题1:
 在win7下 is2009 经常死机崩溃。有时在制作发行时。有时鼠标点击feature时。给技术支持询问回答是:重装看看。
 重装后运行几次就又开始crash。把产品部的同事郁闷坏了。
 再向技术支持询问。回答:升到2010吧,要3万多。你妈呀!!你给钱呀。被逼无奈下了个Is2010破解版装上后确实好了。


 问题2:
 产品部的同时添加好feature,我写好脚本。制作。运行安装。启动执行程序,crash。
 这是最痛苦的一部。
 开始用depend查找。始终不对,虽然depend显示有的库有警告,但应该能正常启动呀。最后多亏了产品部的同时记起以前这种情况是mmdic.dll的问题。
 从安装目录删掉它。运行ok 。该死的mmdic。dll.以后要记得它。


 问题3:
 多语言支持。
 每个工程中都有对应的中英文资源。并且放在同一个rc文件。以前在vc6&&xp下用SetThreadLocale控制语言版本。
 但经过查找在win7下 SetThreadLocale 已经不起作用了,应该用SetThreadUILanguage。
 主框架的资源单独做在了一个dll中。在App::InitInstance()中用LoadLibrary(),用AfxSetResourceHandle指定资源句柄。
 改好后,
 bug1:安装后测试。win7下启动不了。提示返回消息服务。
 bug2:xp下倒是启动成功但是明明是英文但界面是中文版。
 1:经过排查原来测试机的uac为中等,但应用程序的编译项中的链接/高级/uac是是否绕过uac =true。改为false后win7可启动并且是英文版。
 2:a经过调试SetThreadLocale&&LoadLibrary&&AfxSetResourceHandle返回值是正确的。但界面在xp下就是中文的。
 但是将框架的资源文件的中文资源全部删除,只保留英文资源,启动。框架是英文的,但个模块的gui还是中文你的。郁闷。
 总不能将所有的模块的资源都只有英文吧。(行不通)
  b:google后在http://blog.csdn.net/akof1314/article/details/6321628 找到一篇blog。感到我的做法没什么不对。回家睡觉。
  早上醒来,列好要做的几项排查工作。
  按bolg上的说明做了个例子,在xp,win7 正常。
  c:xp上将程序安装后,清空垃圾箱。再在安装目录下将所有的动态库,exe都删除掉。再从垃圾箱中将框架等exe动态库一一恢复,
    每回复一个执行一次应用看最小的范围的dll是那些,从而缩小有问题的动态库。
    当框架能起来的时候是英文版,再继续回复文件,当回复到一个基础库后再启动框架,gui为中文吧。找到了。
    告诉产品部的同事。回答是有的dll没有添加英文开关。添加语言开关后后运行 ok。


   
  看来在xp各个动态库中也应该添加语言开关,


  经验:要积极的开拓思路,查找各种可能。用排除法进行范围缩小达到目的。
  感谢无幻的blog

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: VC String 是一种C ++字符串类,可以处理不同编码的字符串,包括多语言。这意味着VC String可以支持许多不同的字符集,并且可以将数据从一个字符集转换为另一个字符集。 VCString使用Unicode,这是一种通用字符编码标准,它可以表示世界上所有语言的字符。这意味着无论用户在哪个家,他们都可以使用他们自己的语言编写和读取字符串。 在多语言应用程序中,VC String特别有用。当应用程序需要处理多种语言时,VC String可以自动检测和转换各种字符集。这样,应用程序就可以在不同的地方运行而不会出现乱码或字符无法识别的问题VC String支持的一些字符集包括ASCII、Unicode、UTF-8和UTF-16等等。因此,它可以在处理任何文本数据时都保持准确性和完整性。无论是在开发桌面,移动还是Web应用程序,VC String都是一个强而有力的工具,可确保应用程序的正确性、可靠性和易读性。 ### 回答2: VC++中的字符串类string可以支持语言。因为不同的语言有不同的字符集和编码方式,因此在处理不同语言的字符串时需要特别注意编码问题VC++中的string类可以使用多种不同的编码方式,如ASCII编码、Unicode编码(UTF-16和UTF-8)等,以支持不同语言的字符串处理。 在使用string类处理多语言字符串时,需要根据实际情况选择不同的编码方式,比如在处理中文字符串时常选用UTF-8编码,因为UTF-8可以表示全世界大部分字符,包括中文和日文等字符。而在处理一些欧洲语言时,常选用Unicode UTF-16编码,因为这些语言所使用的字符集较小,可以用UTF-16表示。 除了编码方式外,string类还提供了一些成员函数来处理不同语言之间的字符串。比如,可以使用成员函数find或substr来查找和截取字符串中的某个子串,这个子串可以是任何语言的字符序列。此外,string类还提供了转换函数,如stoi、stof、stod等,可以将包含数字的字符串转换为数字类型,这些数字类型可以在各个家和地区通用。 总之,VC++中的string类支持语言处理,可以通过不同编码方式和成员函数,处理各种语言的字符串,同时满足不同地区的需求。 ### 回答3: VC++(Visual C++)是一种语言,它可以在Windows操作系统上开发程序。在VC++中,可以使用多种编程语言,如C++、C#、VB等。而其中C++就包含了string类,是STL(Standard Template Library)中的一个模板类,用于处理字符串。 在VC++中,string类可以处理多语言的字符串,包括中文、英文、日文、韩文等。由于不同家的字符编码不同,所以需要使用不同的编码方式来处理不同语言的字符串。 在VC++中,可以使用ANSI、Unicode、UTF-8等不同的编码方式来处理字符串。对于不同的编码方式,需要使用不同的字符集对字符串进行处理。例如,在Unicode编码方式中,一个字符占用两个字节的空间,而在ANSI编码方式中,一个字符占用一个字节的空间。 因此,在使用VC++的string类处理多语言的字符串时,需要根据不同的语言和字符编码方式来选择合适的字符集和编码方式。对于一些复杂的多字节字符编码方式,例如UTF-8编码方式,需要使用专门的库来进行处理,以保证字符串的正确性和可读性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值