Home | Info | Community | Development | myReactOS | Contact Us
[static]
Definition at line 73 of file add.c.
Referenced by AddDlgProc().
{ TCHAR NewLayout[CCH_ULONG_DEC + 1], Lang[MAX_PATH], LangID[CCH_LAYOUT_ID + 1], Layout[MAX_PATH], SubPath[CCH_LAYOUT_ID + 1], szMessage[MAX_PATH]; INT iLayout, iLang; HKEY hKey, hSubKey; DWORD cValues; PTSTR pts; LCID lcid; iLayout = SendMessage(hLayoutList, CB_GETCURSEL, 0, 0); if (iLayout == CB_ERR) return; if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Preload"), 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) { if (RegQueryInfoKey(hKey, NULL, NULL, NULL, NULL, NULL, NULL, &cValues, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) { _ultot(cValues + 1, NewLayout, 10); iLang = SendMessage(hLangList, CB_GETCURSEL, 0, 0); lcid = SendMessage(hLangList, CB_GETITEMDATA, iLang, 0); pts = (PTSTR) SendMessage(hLayoutList, CB_GETITEMDATA, iLayout, 0); GetLocaleInfo(MAKELCID(lcid, SORT_DEFAULT), LOCALE_ILANGUAGE, Lang, sizeof(Lang) / sizeof(TCHAR)); wsprintf(LangID, _T("0000%s"), Lang); if (IsLayoutExists(pts, LangID)) { LoadString(hApplet, IDS_LAYOUT_EXISTS2, szMessage, sizeof(szMessage) / sizeof(TCHAR)); MessageBox(hwndDlg, szMessage, NULL, MB_OK | MB_ICONINFORMATION); RegCloseKey(hKey); return; } if (_tcscmp(LangID, pts) != 0) { if (!GetLayoutName(pts, Layout)) { RegCloseKey(hKey); return; } } else { if (!GetLayoutName(LangID, Layout)) { RegCloseKey(hKey); return; } } if (SendMessage(hLayoutList, CB_SELECTSTRING, (WPARAM) -1, (LPARAM)Layout) != CB_ERR) { if (GetLayoutCount(Lang) >= 1) { wsprintf(SubPath, _T("d%03d%s"), GetLayoutCount(Lang), Lang); } else if ((_tcscmp(LangID, pts) != 0) && (GetLayoutCount(Lang) == 0)) { wsprintf(SubPath, _T("d%03d%s"), 0, Lang); } else SubPath[0] = '\0'; } else { RegCloseKey(hKey); return; } if (_tcslen(SubPath) != 0) { if (RegCreateKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Substitutes"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hSubKey, NULL) == ERROR_SUCCESS) { if (RegSetValueEx(hSubKey, SubPath, 0, REG_SZ, (LPBYTE)pts, (DWORD)((CCH_LAYOUT_ID + 1) * sizeof(TCHAR))) != ERROR_SUCCESS) { RegCloseKey(hSubKey); RegCloseKey(hKey); return; } RegCloseKey(hSubKey); } lstrcpy(pts, SubPath); } if (RegSetValueEx(hKey, NewLayout, 0, REG_SZ, (LPBYTE)pts, (DWORD)((CCH_LAYOUT_ID + 1) * sizeof(TCHAR))) == ERROR_SUCCESS) { UpdateLayoutsList(); } } RegCloseKey(hKey); } }