Fixed language support for Vista.
This commit is contained in:
parent
93a6318a42
commit
f42c529a5a
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue