none
vc 如何判断Windows8当前选择的语言? RRS feed

  • 问题

  • 以前在win7里,用GetUserDefaultUILanguage() API是Ok的,

    现在换成了Window8系统, 用这个API, 在控制面板的语言选项里,

    不管我改成英语还是中文, GetUserDefaultUILanguage() 这个API始终返回的是2052,表示简体中文,

    请问在win8中是不是用其他判断语言的方法?

    2013年1月31日 2:57

答案

全部回复

  •             //获取或设置应用程序首选语言的 BCP-47 语言标记
                string lang = ApplicationLanguages.PrimaryLanguageOverride;

    Hi,Donarlee

    看看这个获取应用程序首选语言属性是否能帮助到你

    2013年1月31日 3:18
  • 谢谢Jack, 我的程序并不是Windows RT程序, 原来是Win7上的, 后来在Win8上的重编译的,所以像你这样写,程序编译不过啊~
    2013年1月31日 3:29
  • 你是使用的这个API吧,那你程序是WPF/Winform的吗?

    [DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
            static extern System.UInt16 GetUserDefaultUILanguage();

    2013年1月31日 3:35
  • 就是一般的VC程序,用MFC的
    2013年1月31日 3:56
  • Hi,

    Win7的程序在Win8下没问题。不过我认为是你更改语言的方法有问题,你更改成英语的时候是把英语放在最上面的吗?这样才能生效。


    Aaron
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    2013年2月1日 7:32
    版主
  • 我就是这样修改语言的, 不管我把英语,还是中文移到最上面,GetUserDefaultUILanguage()  API返回的都是2052
    2013年2月4日 1:21
  • 你贴下你的代码,或者做个demo,才能仔细看看问题出在哪里
    2013年2月6日 6:20
  • 我用vs2012新建了一个demo程序叫222, 是基于vc++ MFC Application的,在OnInitDialog里我添加了 LANGID languageID= GetUserDefaultUILanguage();  切换语言(中文和英语),调试, languageID 始终返回2052, 代码如下:

    BOOL CMy222Dlg::OnInitDialog()
    {
     CDialogEx::OnInitDialog();

     // Add "About..." menu item to system menu.

     // IDM_ABOUTBOX must be in the system command range.
     ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
     ASSERT(IDM_ABOUTBOX < 0xF000);

     CMenu* pSysMenu = GetSystemMenu(FALSE);
     if (pSysMenu != NULL)
     {
      BOOL bNameValid;
      CString strAboutMenu;
      bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
      ASSERT(bNameValid);
      if (!strAboutMenu.IsEmpty())
      {
       pSysMenu->AppendMenu(MF_SEPARATOR);
       pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
      }
     }

     // Set the icon for this dialog.  The framework does this automatically
     //  when the application's main window is not a dialog
     SetIcon(m_hIcon, TRUE);   // Set big icon
     SetIcon(m_hIcon, FALSE);  // Set small icon

     // TODO: Add extra initialization here

     LANGID languageID= GetUserDefaultUILanguage();
     
     return TRUE;  // return TRUE  unless you set the focus to a control
    }

    2013年2月6日 8:49
  • 放好假了, 继续工作了~~~~~~~~~~
    2013年2月17日 5:59
  • 我发现了,是我没有装英语的语言包, 所以虽然选择了英语,却不可用

    • 已标记为答案 donarlee 2013年2月17日 8:48
    2013年2月17日 8:48