如何在visual c ++中使用EnumSystemLocales函数和EnumLocalesProc回调函数

时间:2014-02-18 08:55:07

标签: c++ visual-studio-2010 visual-c++

int calculate (int a , int b)
{
return a+b;
}
int main ()
{
return 0 ;
}

如您所知,EnumSystemLocales和EnumLocalesProc是两个用于回调任何函数的API。我想使用这些API,但msdn或任何地方都没有任何示例。在这里,我想使用这些API回调计算函数。

1 个答案:

答案 0 :(得分:0)

以下是有关如何使用“EnumSystemLocales”的示例:

#include <windows.h>
#include <tchar.h>
#include <stdio.h>

BOOL CALLBACK MyLocaleEnumProc(LPTSTR szLocaleString)
{
  _tprintf(_T("%s\r\n"), szLocaleString);
  return TRUE;
}

int _tmain()
{
  EnumSystemLocales(&MyLocaleEnumProc, LCID_INSTALLED);
  return 0;
}

如果您只想拥有区域设置列表,可以执行以下操作:

#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <vector>
#include <string>

typedef std::vector<std::basic_string<TCHAR>> tLocales;
std::vector<std::basic_string<TCHAR>> g_locales;

BOOL CALLBACK MyLocaleEnumProc(LPTSTR szLocaleString)
{
  g_locales.push_back(szLocaleString);
  return TRUE;
}
int _tmain()
{
  // Get all locales
  EnumSystemLocales(&MyLocaleEnumProc, LCID_INSTALLED);

  // Print out all locales
  for(tLocales::const_iterator i=g_locales.begin(); i != g_locales.end(); i++)
  {
    _tprintf(_T("Locale: %s\r\n"), i->c_str());
  }
  return 0;
}