如何返回系统区域设置而不是用户区域设置?

时间:2015-03-04 11:18:00

标签: vb6 locale regional-settings

我正在运行VB6.0应用程序并测试更改区域设置是否会导致错误。当用户区域设置和系统区域设置都设置为同一个国家/地区时,应用程序正常工作。但是,如果用户区域设置与系统区域设置不同,那么我就会遇到问题。

为什么GetThreadLocale没有返回系统区域设置?

似乎返回用户区域设置。

E.g。

系统区域设置设置为波兰语和用户区域设置(英国),GetThreadLocale返回2057.为什么不返回1045?

任何提示或建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

VB6内部是unicode,带有COM。 API调用(包括由表单创建的任何窗口)都是ANSI。

VB6的帮助在这个主题上有一个很大的篇章。

对于ANSI应用程序,您可以在“区域选项”中设置非unicode设置。

使用CreateWindowExA创建的Windows将发送给它们的所有unicode字符串转换为ANSI,反之亦然,用于CreateWindowsExW(W表示宽,即每个字符两个字节)。

这是因为Windows 95不支持unicode。