Fixed language support for Vista.

This commit is contained in:
luigi__ 2009-02-10 16:28:22 +00:00
parent 93a6318a42
commit f42c529a5a
1 changed files with 33 additions and 28 deletions

View File

@ -1052,25 +1052,30 @@ void MenuDeinit()
DestroyMenu(mainMenu);
}
typedef int (WINAPI *setLanguageFunc)(LANGID id);
void SetLanguage(int langid)
{
OSVERSIONINFO info;
ZeroMemory(&info, sizeof(info));
info.dwOSVersionInfoSize = sizeof(info);
GetVersionEx(&info);
setLanguageFunc setLanguage = ((info.dwMajorVersion >= 6) ?
(setLanguageFunc)SetThreadUILanguage : (setLanguageFunc)SetThreadLocale);
switch(langid)
{
case 1:
// French
SetThreadLocale(MAKELCID(MAKELANGID(LANG_FRENCH, SUBLANG_FRENCH),
SORT_DEFAULT));
// French
setLanguage(MAKELCID(MAKELANGID(LANG_FRENCH, SUBLANG_FRENCH), SORT_DEFAULT));
break;
case 2:
// Danish
SetThreadLocale(MAKELCID(MAKELANGID(LANG_DANISH, SUBLANG_DEFAULT),
SORT_DEFAULT));
setLanguage(MAKELCID(MAKELANGID(LANG_DANISH, SUBLANG_DEFAULT), SORT_DEFAULT));
break;
case 0:
// English
SetThreadLocale(MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US),
SORT_DEFAULT));
setLanguage(MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT));
break;
default: break;
break;
@ -1763,26 +1768,26 @@ LRESULT OpenFile()
}
//TODO - async key state? for real?
int GetModifiers(int key)
{
int modifiers = 0;
if (key == VK_MENU || key == VK_CONTROL || key == VK_SHIFT)
return 0;
if(GetAsyncKeyState(VK_MENU )) modifiers |= CUSTKEY_ALT_MASK;
if(GetAsyncKeyState(VK_CONTROL)) modifiers |= CUSTKEY_CTRL_MASK;
if(GetAsyncKeyState(VK_SHIFT )) modifiers |= CUSTKEY_SHIFT_MASK;
return modifiers;
int GetModifiers(int key)
{
int modifiers = 0;
if (key == VK_MENU || key == VK_CONTROL || key == VK_SHIFT)
return 0;
if(GetAsyncKeyState(VK_MENU )) modifiers |= CUSTKEY_ALT_MASK;
if(GetAsyncKeyState(VK_CONTROL)) modifiers |= CUSTKEY_CTRL_MASK;
if(GetAsyncKeyState(VK_SHIFT )) modifiers |= CUSTKEY_SHIFT_MASK;
return modifiers;
}
int HandleKeyMessage(WPARAM wParam, LPARAM lParam, int modifiers)
int HandleKeyMessage(WPARAM wParam, LPARAM lParam, int modifiers)
{
//some crap from snes9x I dont understand with toggles and macros...
bool hitHotKey = false;
if((wParam == 0 || wParam == VK_ESCAPE)) // if it's the 'disabled' key, it's never pressed as a hotkey
bool hitHotKey = false;
if((wParam == 0 || wParam == VK_ESCAPE)) // if it's the 'disabled' key, it's never pressed as a hotkey
return 0;
return 0;
@ -2649,12 +2654,12 @@ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM
}
break;
case WM_SYSKEYDOWN:
{
int modifiers = GetModifiers(wParam);
if(!HandleKeyMessage(wParam,lParam, modifiers))
return 0;
break;
case WM_SYSKEYDOWN:
{
int modifiers = GetModifiers(wParam);
if(!HandleKeyMessage(wParam,lParam, modifiers))
return 0;
break;
}
case IDM_DEFSIZE: