Win7 线程语言设置错误可能引起窗口排版变化
2013-06-30 21:27
225 查看
前些天在Win7 下的一个程序弹出打开文件的对话框,发现它的内容全部右对齐,并且使用debug 版调试的时候没有问题,但是使用release 版就有问题。开始以为程序误设了对话框对齐方式,但没有找到什么线索,反而解释不通为什么debug 版本可用。后经高手指点才知道这种现象可能语言被设置成阿拉伯国家,因为那里的习惯是右对齐的(看来不仅古代的我们是一这样的,也才知道windows 的通用窗口需要考虑到各种语言的不同排版)。顺藤摸瓜,终于发现是由于设置线程语言的变量没有初始化,正好随机到一个阿拉伯国家的语言,但这里还有个疑问,为什么界面的文字没有变成阿拉伯文?这由于自己程序的多语言文件mui
中没有阿拉伯语言,默认加载了系统当前语言的资源文件;其次可能是系统中也没有阿拉伯的语言包,因此系统窗口部分的文字也用了系统默认的语言。
总结一下,个人觉的有几点可以借鉴 1. Debug 版本下编译器会将变量初始化一个值,但Release 则可能是乱码,因此发现两个版本的表现不一致可以先关注一下是否有变量未初始化; 2. Windows 窗口显示的格式比较怪异时,可能跟当前线程语言有关; 3. 在程序中有些看似很诡异的现象其实都是有迹可循的。
中没有阿拉伯语言,默认加载了系统当前语言的资源文件;其次可能是系统中也没有阿拉伯的语言包,因此系统窗口部分的文字也用了系统默认的语言。
总结一下,个人觉的有几点可以借鉴 1. Debug 版本下编译器会将变量初始化一个值,但Release 则可能是乱码,因此发现两个版本的表现不一致可以先关注一下是否有变量未初始化; 2. Windows 窗口显示的格式比较怪异时,可能跟当前线程语言有关; 3. 在程序中有些看似很诡异的现象其实都是有迹可循的。
相关文章推荐
- 15.C语言多线程实现变色龙以及cmd窗口标题变化
- WPF如何把图片Image控件设置成,当窗口的放大和缩小,跟随着一起变化
- "跟远程计算机的连接被打断.这可能是网络错误引起的"的解决办法
- win7无法保存打印机设置(错误0x000006d9)解决方法
- 设置body背景图片跟随窗口大小变化
- Memcached expire 设置错误引起的set(key,exp,value)为true而get(key)为null的问题
- 一个小细节引起的悲剧——线程执行顺序错误
- .net WCF 套接字连接中断,可能是由于消息处理错误,或者远程宿主接受超时引起,或者是底层网络资源问题导致,本地套接字时间
- Sqlserver 2005 配置 数据库镜像:1418错误:该错误很可能是安全方面的配置问题引起的
- 在win7上安装SqlServer2008时出现错误:在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke
- Windows 7个性化配置,关闭Win7动画效果,设置窗口背景为“ 豆绿色”,移动“我的文档”
- 由“警告:检测到时钟错误。您的创建可能是不完整的。”引起的!
- win7无法保存打印机设置(错误0x000006d9)解决方法
- VMware 12安装Mac OS X 10.11_Vmware虚拟机下窗口大小自动调整的设置 在BIOS中开启VT虚拟化以提高安卓模拟器的性能_VMware 安装win7出现"二进制转换与此平台上的
- win7如何设置屏幕保护程序、窗口颜色和外观?
- 一个Hibernate中映射文件里设置引起的错误[续]
- SDL控件随窗口变化(解决编译无错误但运行不出来!!)
- Mysql错误消息 语言设置
- WIN7下 ISS常见错误 如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误。
- url重写(urlrewriter)引起的"未将对象引用设置到对象的实例"错误发生的原因