【问题标题】:How to get OS language using C++ API?如何使用 C++ API 获取操作系统语言?
【发布时间】:2010-01-28 09:26:00
【问题描述】:

我正在开发一个根据操作系统语言显示对话框的应用程序。如何使用 C++ 或 Windows API (Windows 2008/Vista/7) 获取操作系统语言?

【问题讨论】:

  • 您好,我尝试使用“GetUserDefaultLocaleName”创建应用程序。但是我在编译过程中遇到了错误。错误 C3861:“GetUserDefaultLocaleName”:未找到标识符我已尝试包括“Windows.h”和“Winnls.h”。在这种情况下也没有改进..请帮助。提前致谢。
  • 嗨,int main() { LPWSTR lpLocaleName=NULL; cout

标签: c++ winapi windows-7 internationalization


【解决方案1】:

在 Windows 中有几个函数可以执行此操作,具体取决于您希望信息采用的格式。在 Windows Vista 之前,语言信息被编码为 LCID(区域设置 ID),其中包括语言以及一些关于排序和格式化。

对于 Windows Vista 和 Windows 7,设计了一个更灵活的系统,称为区域设置名称。 GetSystemDefaultLocaleName

如果您想在 Win2k 和 WinXP 上工作,请使用此选项。 GetSystemDefaultLCID

【讨论】:

  • 您好,我尝试使用“GetUserDefaultLocaleName”创建应用程序。但是我在编译过程中遇到了错误。错误 C3861:“GetUserDefaultLocaleName”:未找到标识符我已尝试包括“Windows.h”和“Winnls.h”。在这种情况下也没有改进..请帮助。提前致谢。
  • 您必须使用最新版本的 windows 头文件(Visual Studio 2008 或 2010)并且您需要 #define WINVER 0x0600 或更大,否则头文件将不允许您访问 API在 Windows Vista 之前可用。
  • 嗨,int main() { LPWSTR lpLocaleName=NULL; cout
  • 默认的语言环境不是系统语言!它们不同是很常见的。
【解决方案2】:

这个问题的公认答案是错误的。您应该根据默认语言环境做出用户界面决策。为此使用GetDefaultUILanguage

【讨论】:

    【解决方案3】:

    你解决了这个问题吗?
    如果答案是否定的,
    LPWSTR lpLocalName=NULL 是错误的。
    LPWSTR lpLocalName=NULL ----> WCHAR localName[LOCALE_NAME_MAX_LENGTH] 是正确的。 因为GetUserDefaultLocalName中没有内存分配。

    【讨论】:

      猜你喜欢
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 2014-12-05
      • 2010-10-03
      • 2018-07-24
      相关资源
      最近更新 更多