VC SDI程序在英文版系统不能运行

场景:

Win7简体中文 + VC2008英文版sp1下编写的SDI程序, 需要实现多语言切换和需要在多种语言的Windows系统下运行.


问题: 

Win7简体中文下, SDI程序可以运行, 放到Win7的英文系统下, CXXXApp::InitInstance中运行到ProcessShellCommand 就返回失败.

BOOL CXXXApp::InitInstance()
{
	......
	if (!ProcessShellCommand(cmdInfo))		// 返回失败
		return FALSE;
	......
}

解决思路:


1. 中文Win7可以, 英文Win7不可以, 第一时间想到是语言的问题. 


2. 后来发现是资源语言设置问题.


3. Win7中文版 + VC2008英文版sp1 创建的SDI工程, 资源默认如下图一:


图一


4. 在这种情况下, 对话框资源上的控件, 输入中文, 编辑状态下可以正常显示, 但是运行时是问号来的, 看图二.



5. 修改对话框资源的语言为"进程默认语言", 运行时就可以正确显示中文了. 看图三.



6. 我看到既然对话框资源设为"进程默认语言"了, 所以我就把菜单, 工具栏等资源的语言也设为"进程默认语言", 当我编辑菜单/工具栏时, 输入了中文内容, 问题就出在这里, 此时资源自动产生了一个"String Table", 其语言并不是"English (U.S.)", 就是这个"String Table"使得ProcessShellCommand返回失败.


7. 正确的做法就是除了对话框资源配置成"进程默认语言"之外, 其他的都使用"英语(美国)". 或者说除了对话框资源配置成"进程默认语言"之外, 其他的都使用(VS2008 英文版sp1)工程的默认语言配置.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值