1

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

为什么 GetThreadLocale 不返回系统语言环境?

它似乎返回了用户区域设置。

例如

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

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

4

1 回答 1

0

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

VB6 的帮助中有一个关于这个主题的大章节。

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

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

这是因为 Windows 95 不支持 unicode。

于 2015-03-04T14:31:24.687 回答