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

来源:互联网 发布:spss软件如何使用 编辑:程序博客网 时间:2024/05/20 05:03

场景:

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)工程的默认语言配置.
0 0
原创粉丝点击