我正在运行VB6.0应用程序并测试更改区域设置是否会导致错误。当用户区域设置和系统区域设置都设置为同一个国家/地区时,应用程序正常工作。但是,如果用户区域设置与系统区域设置不同,那么我就会遇到问题。
为什么GetThreadLocale没有返回系统区域设置?
似乎返回用户区域设置。
E.g。
系统区域设置设置为波兰语和用户区域设置(英国),GetThreadLocale返回2057.为什么不返回1045?
任何提示或建议都将不胜感激。
答案 0 :(得分:0)
VB6内部是unicode,带有COM。 API调用(包括由表单创建的任何窗口)都是ANSI。
VB6的帮助在这个主题上有一个很大的篇章。
对于ANSI应用程序,您可以在“区域选项”中设置非unicode设置。
使用CreateWindowExA创建的Windows将发送给它们的所有unicode字符串转换为ANSI,反之亦然,用于CreateWindowsExW(W表示宽,即每个字符两个字节)。
这是因为Windows 95不支持unicode。