Make intl.cpl really switch InstallLanguage and Default entries of NLS\Language key. Problem with freeldr solved in hacky way - it writes now e.g. "0409" and not "00000409", as it generally should.

svn path=/trunk/; revision=15049
This commit is contained in:
Aleksey Bragin 2005-05-06 16:21:30 +00:00
parent ecba32de75
commit c72be4b69c

View file

@ -83,40 +83,43 @@ CreateLanguagesList(HWND hwnd)
(LPARAM)langSel);
}
/*
static VOID
ShowLanguagesList(HWND hwnd)
// Sets new locale
void SetNewLocale(LCID lcid)
{
TIME_ZONE_INFORMATION TimeZoneInfo;
PTIMEZONE_ENTRY Entry;
DWORD dwIndex;
DWORD i;
// HKCU\\Control Panel\\International\\Locale = 0409 (type=0)
// HKLM,"SYSTEM\CurrentControlSet\Control\NLS\Language","Default",0x00000000,"0409" (type=0)
// HKLM,"SYSTEM\CurrentControlSet\Control\NLS\Language","InstallLanguage",0x00000000,"0409" (type=0)
GetTimeZoneInformation(&TimeZoneInfo);
// Set locale
HKEY localeKey;
HKEY langKey;
DWORD ret;
TCHAR value[9];
dwIndex = 0;
i = 0;
Entry = TimeZoneListHead;
while (Entry != NULL)
ret = RegOpenKeyW(HKEY_CURRENT_USER, L"Control Panel\\International", &localeKey);
if (ret != ERROR_SUCCESS)
{
SendMessageW(hwnd,
CB_ADDSTRING,
0,
(LPARAM)Entry->Description);
if (!wcscmp(Entry->StandardName, TimeZoneInfo.StandardName))
dwIndex = i;
i++;
Entry = Entry->Next;
// some serious error
//TODO: Tell user about it
return;
}
SendMessageW(hwnd,
CB_SETCURSEL,
(WPARAM)dwIndex,
0);
wsprintf(value, L"%04x", (DWORD)lcid);
RegSetValueExW(localeKey, L"Locale", 0, REG_SZ, (BYTE *)value, sizeof(value));
RegCloseKey(localeKey);
// Set language
ret = RegOpenKeyW(HKEY_LOCAL_MACHINE, L"SYSTEM\\CurrentControlSet\\Control\\NLS\\Language", &langKey);
if (ret != ERROR_SUCCESS)
return;
RegSetValueExW(langKey, L"Default", 0, REG_SZ, (BYTE *)value, sizeof(value));
RegSetValueExW(langKey, L"InstallLanguage", 0, REG_SZ, (BYTE *)value, sizeof(value));
RegCloseKey(langKey);
}
*/
/* Property page dialog callback */
INT_PTR CALLBACK
@ -150,7 +153,6 @@ LocalePageProc(HWND hwndDlg,
// Apply changes
LCID NewLcid;
int iCurSel;
char tmp[100];
// Acquire new value
iCurSel = SendMessageW(hList,
@ -169,10 +171,8 @@ LocalePageProc(HWND hwndDlg,
break;
//TOOD: Actually set new locale
sprintf(tmp, "%x, cursel=%d", NewLcid, iCurSel);
MessageBoxA(hwndDlg, tmp, "debug", MB_OK);
// Actually set new locale
SetNewLocale(NewLcid);
}
}
break;