Win7 线程语言设置错误可能引起窗口排版变化

前些天在Win7 下的一个程序弹出打开文件的对话框,发现它的内容全部右对齐,并且使用debug 版调试的时候没有问题,但是使用release 版就有问题。开始以为程序误设了对话框对齐方式,但没有找到什么线索,反而解释不通为什么debug 版本可用。后经高手指点才知道这种现象可能语言被设置成阿拉伯国家,因为那里的习惯是右对齐的(看来不仅古代的我们是一这样的,也才知道windows 的通用窗口需要考虑到各种语言的不同排版)。顺藤摸瓜,终于发现是由于设置线程语言的变量没有初始化,正好随机到一个阿拉伯国家的语言,但这里还有个疑问,为什么界面的文字没有变成阿拉伯文?这由于自己程序的多语言文件mui 中没有阿拉伯语言,默认加载了系统当前语言的资源文件;其次可能是系统中也没有阿拉伯的语言包,因此系统窗口部分的文字也用了系统默认的语言。

总结一下,个人觉的有几点可以借鉴 1. Debug 版本下编译器会将变量初始化一个值,但Release 则可能是乱码,因此发现两个版本的表现不一致可以先关注一下是否有变量未初始化; 2. Windows 窗口显示的格式比较怪异时,可能跟当前线程语言有关; 3. 在程序中有些看似很诡异的现象其实都是有迹可循的。

你可能感兴趣的:(Win7 线程语言设置错误可能引起窗口排版变化)