mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 19:12:57 +00:00
- Implement "Input language Properties" dialog
svn path=/trunk/; revision=33504
This commit is contained in:
parent
c5465c5668
commit
381642f247
17 changed files with 285 additions and 84 deletions
|
@ -36,7 +36,7 @@ SelectLayoutByLang(VOID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static INT
|
INT
|
||||||
GetLayoutCount(LPTSTR szLang)
|
GetLayoutCount(LPTSTR szLang)
|
||||||
{
|
{
|
||||||
HKEY hKey;
|
HKEY hKey;
|
||||||
|
@ -84,7 +84,7 @@ AddNewLayout(HWND hwndDlg)
|
||||||
iLayout = SendMessage(hLayoutList, CB_GETCURSEL, 0, 0);
|
iLayout = SendMessage(hLayoutList, CB_GETCURSEL, 0, 0);
|
||||||
if (iLayout == CB_ERR) return;
|
if (iLayout == CB_ERR) return;
|
||||||
|
|
||||||
if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Preload"), 0, KEY_QUERY_VALUE | KEY_SET_VALUE, &hKey) == ERROR_SUCCESS)
|
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)
|
if (RegQueryInfoKey(hKey, NULL, NULL, NULL, NULL, NULL, NULL, &cValues, NULL, NULL, NULL, NULL) == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
|
@ -111,7 +111,7 @@ AddNewLayout(HWND hwndDlg)
|
||||||
if (_tcslen(SubPath) != 0)
|
if (_tcslen(SubPath) != 0)
|
||||||
{
|
{
|
||||||
if (RegCreateKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Substitutes"), 0, NULL,
|
if (RegCreateKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Substitutes"), 0, NULL,
|
||||||
REG_OPTION_NON_VOLATILE, KEY_QUERY_VALUE | KEY_SET_VALUE | KEY_WRITE,
|
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
|
||||||
NULL, &hSubKey, NULL) == ERROR_SUCCESS)
|
NULL, &hSubKey, NULL) == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
if (RegSetValueEx(hSubKey, SubPath, 0, REG_SZ, (LPBYTE)pts,
|
if (RegSetValueEx(hSubKey, SubPath, 0, REG_SZ, (LPBYTE)pts,
|
||||||
|
@ -123,7 +123,7 @@ AddNewLayout(HWND hwndDlg)
|
||||||
}
|
}
|
||||||
RegCloseKey(hSubKey);
|
RegCloseKey(hSubKey);
|
||||||
}
|
}
|
||||||
pts = SubPath;
|
lstrcpy(pts, SubPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RegSetValueEx(hKey,
|
if (RegSetValueEx(hKey,
|
||||||
|
@ -141,7 +141,7 @@ AddNewLayout(HWND hwndDlg)
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CreateKeyboardLayoutList(VOID)
|
CreateKeyboardLayoutList(HWND hItemsList)
|
||||||
{
|
{
|
||||||
HKEY hKey;
|
HKEY hKey;
|
||||||
PTSTR pstrLayoutID;
|
PTSTR pstrLayoutID;
|
||||||
|
@ -157,16 +157,16 @@ CreateKeyboardLayoutList(VOID)
|
||||||
{
|
{
|
||||||
GetLayoutName(szLayoutID, KeyName);
|
GetLayoutName(szLayoutID, KeyName);
|
||||||
|
|
||||||
INT iIndex = (INT) SendMessage(hLayoutList, CB_ADDSTRING, 0, (LPARAM)KeyName);
|
INT iIndex = (INT) SendMessage(hItemsList, CB_ADDSTRING, 0, (LPARAM)KeyName);
|
||||||
|
|
||||||
pstrLayoutID = (PTSTR)HeapAlloc(hProcessHeap, 0, sizeof(szLayoutID));
|
pstrLayoutID = (PTSTR)HeapAlloc(hProcessHeap, 0, sizeof(szLayoutID));
|
||||||
lstrcpy(pstrLayoutID, szLayoutID);
|
lstrcpy(pstrLayoutID, szLayoutID);
|
||||||
SendMessage(hLayoutList, CB_SETITEMDATA, iIndex, (LPARAM)pstrLayoutID);
|
SendMessage(hItemsList, CB_SETITEMDATA, iIndex, (LPARAM)pstrLayoutID);
|
||||||
|
|
||||||
// FIXME!
|
// FIXME!
|
||||||
if (_tcscmp(szLayoutID, _T("00000409")) == 0)
|
if (_tcscmp(szLayoutID, _T("00000409")) == 0)
|
||||||
{
|
{
|
||||||
SendMessage(hLayoutList, CB_SETCURSEL, (WPARAM)iIndex, (LPARAM)0);
|
SendMessage(hItemsList, CB_SETCURSEL, (WPARAM)iIndex, (LPARAM)0);
|
||||||
}
|
}
|
||||||
|
|
||||||
dwIndex++;
|
dwIndex++;
|
||||||
|
@ -220,7 +220,7 @@ AddDlgProc(HWND hDlg,
|
||||||
hLangList = GetDlgItem(hDlg, IDC_INPUT_LANG_COMBO);
|
hLangList = GetDlgItem(hDlg, IDC_INPUT_LANG_COMBO);
|
||||||
hLayoutList = GetDlgItem(hDlg, IDC_KEYBOARD_LO_COMBO);
|
hLayoutList = GetDlgItem(hDlg, IDC_KEYBOARD_LO_COMBO);
|
||||||
EnumSystemLocales(LanguagesEnumProc, LCID_INSTALLED);
|
EnumSystemLocales(LanguagesEnumProc, LCID_INSTALLED);
|
||||||
CreateKeyboardLayoutList();
|
CreateKeyboardLayoutList(hLayoutList);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -50,16 +50,14 @@ KeySettingsDlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam);
|
||||||
INT_PTR CALLBACK
|
INT_PTR CALLBACK
|
||||||
AddDlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam);
|
AddDlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam);
|
||||||
VOID
|
VOID
|
||||||
CreateKeyboardLayoutList(VOID);
|
CreateKeyboardLayoutList(HWND hItemsList);
|
||||||
|
INT
|
||||||
|
GetLayoutCount(LPTSTR szLang);
|
||||||
|
|
||||||
/* changekeyseq.c */
|
/* changekeyseq.c */
|
||||||
INT_PTR CALLBACK
|
INT_PTR CALLBACK
|
||||||
ChangeKeySeqDlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam);
|
ChangeKeySeqDlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam);
|
||||||
|
|
||||||
/* inputlangprop.c */
|
|
||||||
INT_PTR CALLBACK
|
|
||||||
InputLangPropDlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam);
|
|
||||||
|
|
||||||
void ShowLastWin32Error(HWND hWndOwner);
|
void ShowLastWin32Error(HWND hWndOwner);
|
||||||
|
|
||||||
#endif /* __CPL_INPUT_H */
|
#endif /* __CPL_INPUT_H */
|
||||||
|
|
|
@ -16,6 +16,5 @@
|
||||||
<file>keysettings.c</file>
|
<file>keysettings.c</file>
|
||||||
<file>add.c</file>
|
<file>add.c</file>
|
||||||
<file>changekeyseq.c</file>
|
<file>changekeyseq.c</file>
|
||||||
<file>inputlangprop.c</file>
|
|
||||||
<file>input.rc</file>
|
<file>input.rc</file>
|
||||||
</module>
|
</module>
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
/*
|
|
||||||
*
|
|
||||||
* PROJECT: input.dll
|
|
||||||
* FILE: dll/win32/input/inputlangprop.c
|
|
||||||
* PURPOSE: input.dll
|
|
||||||
* PROGRAMMER: Dmitry Chapyshev (lentind@yandex.ru)
|
|
||||||
* Colin Finck
|
|
||||||
* UPDATE HISTORY:
|
|
||||||
* 06-09-2007 Created
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "resource.h"
|
|
||||||
#include "input.h"
|
|
||||||
|
|
||||||
INT_PTR CALLBACK
|
|
||||||
InputLangPropDlgProc(HWND hDlg,
|
|
||||||
UINT message,
|
|
||||||
WPARAM wParam,
|
|
||||||
LPARAM lParam)
|
|
||||||
{
|
|
||||||
UNREFERENCED_PARAMETER(lParam);
|
|
||||||
|
|
||||||
switch (message)
|
|
||||||
{
|
|
||||||
case WM_INITDIALOG:
|
|
||||||
CreateKeyboardLayoutList();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case WM_COMMAND:
|
|
||||||
switch (LOWORD(wParam))
|
|
||||||
{
|
|
||||||
case IDOK:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IDCANCEL:
|
|
||||||
EndDialog(hDlg,LOWORD(wParam));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* EOF */
|
|
|
@ -67,9 +67,9 @@ CAPTION "
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Åçèê íà ïèñàíå", -1, 7, 7, 55, 8
|
LTEXT "Åçèê íà ïèñàíå", -1, 7, 7, 55, 8
|
||||||
LTEXT "", -1, 73, 7, 129, 8
|
LTEXT "", IDC_INPUT_LANG_STR, 73, 7, 129, 8
|
||||||
LTEXT "Êëàâèàòóðíà ïîäðåäáà/IME:", -1, 7, 21, 110, 10
|
LTEXT "Êëàâèàòóðíà ïîäðåäáà/IME:", -1, 7, 21, 110, 10
|
||||||
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 60, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 150, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
||||||
DEFPUSHBUTTON "Äîáðå", IDOK, 116, 53, 52, 14
|
DEFPUSHBUTTON "Äîáðå", IDOK, 116, 53, 52, 14
|
||||||
PUSHBUTTON "Îòêàç", IDCANCEL, 169, 53, 52, 14
|
PUSHBUTTON "Îòêàç", IDCANCEL, 169, 53, 52, 14
|
||||||
END
|
END
|
||||||
|
|
|
@ -67,9 +67,9 @@ CAPTION "Eingabesprache Einstellungen"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Eingabesprache:", -1, 7, 7, 61, 8
|
LTEXT "Eingabesprache:", -1, 7, 7, 61, 8
|
||||||
LTEXT "", -1, 73, 7, 129, 8
|
LTEXT "", IDC_INPUT_LANG_STR, 73, 7, 129, 8
|
||||||
LTEXT "&Tastaturlayout/IME:", -1, 7, 21, 110, 10
|
LTEXT "&Tastaturlayout/IME:", -1, 7, 21, 110, 10
|
||||||
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 60, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 150, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
||||||
DEFPUSHBUTTON "OK", IDOK, 116, 53, 52, 14
|
DEFPUSHBUTTON "OK", IDOK, 116, 53, 52, 14
|
||||||
PUSHBUTTON "Abbrechen", IDCANCEL, 169, 53, 52, 14
|
PUSHBUTTON "Abbrechen", IDCANCEL, 169, 53, 52, 14
|
||||||
END
|
END
|
||||||
|
|
|
@ -67,9 +67,9 @@ CAPTION "
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Ãëþóóá åéóáãùãÞò:", -1, 7, 7, 61, 8
|
LTEXT "Ãëþóóá åéóáãùãÞò:", -1, 7, 7, 61, 8
|
||||||
LTEXT "", -1, 73, 7, 129, 8
|
LTEXT "", IDC_INPUT_LANG_STR, 73, 7, 129, 8
|
||||||
LTEXT "&ÄéÜôáîç ðëçêôñïëïãßïõ/IME:", -1, 7, 21, 110, 10
|
LTEXT "&ÄéÜôáîç ðëçêôñïëïãßïõ/IME:", -1, 7, 21, 110, 10
|
||||||
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 60, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 150, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
||||||
DEFPUSHBUTTON "OK", IDOK, 116, 53, 52, 14
|
DEFPUSHBUTTON "OK", IDOK, 116, 53, 52, 14
|
||||||
PUSHBUTTON "¢êõñï", IDCANCEL, 169, 53, 52, 14
|
PUSHBUTTON "¢êõñï", IDCANCEL, 169, 53, 52, 14
|
||||||
END
|
END
|
||||||
|
|
|
@ -67,9 +67,9 @@ CAPTION "Input language Properties"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Input language:", -1, 7, 7, 61, 8
|
LTEXT "Input language:", -1, 7, 7, 61, 8
|
||||||
LTEXT "", -1, 73, 7, 129, 8
|
LTEXT "", IDC_INPUT_LANG_STR, 73, 7, 129, 8
|
||||||
LTEXT "&Keyboard layout/IME:", -1, 7, 21, 110, 10
|
LTEXT "&Keyboard layout/IME:", -1, 7, 21, 110, 10
|
||||||
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 60, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 150, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
||||||
DEFPUSHBUTTON "OK", IDOK, 116, 53, 52, 14
|
DEFPUSHBUTTON "OK", IDOK, 116, 53, 52, 14
|
||||||
PUSHBUTTON "Cancel", IDCANCEL, 169, 53, 52, 14
|
PUSHBUTTON "Cancel", IDCANCEL, 169, 53, 52, 14
|
||||||
END
|
END
|
||||||
|
|
|
@ -72,9 +72,9 @@ CAPTION "Propiedades del idioma de entrada"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "&Idioma de dispositivo de entrada:", -1, 7, 7, 61, 8
|
LTEXT "&Idioma de dispositivo de entrada:", -1, 7, 7, 61, 8
|
||||||
LTEXT "", -1, 73, 7, 129, 8
|
LTEXT "", IDC_INPUT_LANG_STR, 73, 7, 129, 8
|
||||||
LTEXT "&Distribución del teclado/IME:", -1, 7, 21, 110, 10
|
LTEXT "&Distribución del teclado/IME:", -1, 7, 21, 110, 10
|
||||||
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 60, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 150, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
||||||
DEFPUSHBUTTON "Aceptar", IDOK, 116, 53, 52, 14
|
DEFPUSHBUTTON "Aceptar", IDOK, 116, 53, 52, 14
|
||||||
PUSHBUTTON "Cancelar", IDCANCEL, 169, 53, 52, 14
|
PUSHBUTTON "Cancelar", IDCANCEL, 169, 53, 52, 14
|
||||||
END
|
END
|
||||||
|
|
|
@ -67,9 +67,9 @@ CAPTION "Propriet
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Langue de saisie :", -1, 7, 7, 61, 8
|
LTEXT "Langue de saisie :", -1, 7, 7, 61, 8
|
||||||
LTEXT "", -1, 73, 7, 129, 8
|
LTEXT "", IDC_INPUT_LANG_STR, 73, 7, 129, 8
|
||||||
LTEXT "Configuration clavier/IME :", -1, 7, 21, 110, 10
|
LTEXT "Configuration clavier/IME :", -1, 7, 21, 110, 10
|
||||||
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 60, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 150, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
||||||
DEFPUSHBUTTON "OK", IDOK, 116, 53, 52, 14
|
DEFPUSHBUTTON "OK", IDOK, 116, 53, 52, 14
|
||||||
PUSHBUTTON "Annuler", IDCANCEL, 169, 53, 52, 14
|
PUSHBUTTON "Annuler", IDCANCEL, 169, 53, 52, 14
|
||||||
END
|
END
|
||||||
|
|
|
@ -67,9 +67,9 @@ CAPTION "Propriet
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Lingua:", -1, 7, 7, 61, 8
|
LTEXT "Lingua:", -1, 7, 7, 61, 8
|
||||||
LTEXT "", -1, 73, 7, 129, 8
|
LTEXT "", IDC_INPUT_LANG_STR, 73, 7, 129, 8
|
||||||
LTEXT "&Disposizione/IME tastiera:", -1, 7, 21, 110, 10
|
LTEXT "&Disposizione/IME tastiera:", -1, 7, 21, 110, 10
|
||||||
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 60, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 150, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
||||||
DEFPUSHBUTTON "OK", IDOK, 116, 53, 52, 14
|
DEFPUSHBUTTON "OK", IDOK, 116, 53, 52, 14
|
||||||
PUSHBUTTON "Annulla", IDCANCEL, 169, 53, 52, 14
|
PUSHBUTTON "Annulla", IDCANCEL, 169, 53, 52, 14
|
||||||
END
|
END
|
||||||
|
|
|
@ -74,9 +74,9 @@ CAPTION "W
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Jêzyk:", -1, 7, 7, 61, 8
|
LTEXT "Jêzyk:", -1, 7, 7, 61, 8
|
||||||
LTEXT "", -1, 73, 7, 129, 8
|
LTEXT "", IDC_INPUT_LANG_STR, 73, 7, 129, 8
|
||||||
LTEXT "&Uk³ad klawiatury/IME:", -1, 7, 21, 110, 10
|
LTEXT "&Uk³ad klawiatury/IME:", -1, 7, 21, 110, 10
|
||||||
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 60, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 150, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
||||||
DEFPUSHBUTTON "OK", IDOK, 116, 53, 52, 14
|
DEFPUSHBUTTON "OK", IDOK, 116, 53, 52, 14
|
||||||
PUSHBUTTON "Anuluj", IDCANCEL, 169, 53, 52, 14
|
PUSHBUTTON "Anuluj", IDCANCEL, 169, 53, 52, 14
|
||||||
END
|
END
|
||||||
|
|
|
@ -67,9 +67,9 @@ CAPTION "
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "ßçûê ââîäà:", -1, 7, 7, 61, 8
|
LTEXT "ßçûê ââîäà:", -1, 7, 7, 61, 8
|
||||||
LTEXT "", -1, 73, 7, 129, 8
|
LTEXT "", IDC_INPUT_LANG_STR, 73, 7, 129, 8
|
||||||
LTEXT "&Ðàñêëàäêà êëàâèàòóðû:", -1, 7, 21, 170, 10
|
LTEXT "&Ðàñêëàäêà êëàâèàòóðû:", -1, 7, 21, 170, 10
|
||||||
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 60, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 150, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
||||||
DEFPUSHBUTTON "OK", IDOK, 114, 53, 52, 14
|
DEFPUSHBUTTON "OK", IDOK, 114, 53, 52, 14
|
||||||
PUSHBUTTON "Îòìåíà", IDCANCEL, 169, 53, 52, 14
|
PUSHBUTTON "Îòìåíà", IDCANCEL, 169, 53, 52, 14
|
||||||
END
|
END
|
||||||
|
|
|
@ -71,9 +71,9 @@ CAPTION "Input language Properties"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Input language:", -1, 7, 7, 61, 8
|
LTEXT "Input language:", -1, 7, 7, 61, 8
|
||||||
LTEXT "", -1, 73, 7, 129, 8
|
LTEXT "", IDC_INPUT_LANG_STR, 73, 7, 129, 8
|
||||||
LTEXT "&Keyboard layout/IME:", -1, 7, 21, 110, 10
|
LTEXT "&Keyboard layout/IME:", -1, 7, 21, 110, 10
|
||||||
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 60, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 150, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
||||||
DEFPUSHBUTTON "OK", IDOK, 116, 53, 52, 14
|
DEFPUSHBUTTON "OK", IDOK, 116, 53, 52, 14
|
||||||
PUSHBUTTON "Zruši<C5A1>", IDCANCEL, 169, 53, 52, 14
|
PUSHBUTTON "Zruši<C5A1>", IDCANCEL, 169, 53, 52, 14
|
||||||
END
|
END
|
||||||
|
|
|
@ -75,9 +75,9 @@ CAPTION "
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Ìîâà ââîäó:", -1, 7, 7, 61, 8
|
LTEXT "Ìîâà ââîäó:", -1, 7, 7, 61, 8
|
||||||
LTEXT "", -1, 73, 7, 129, 8
|
LTEXT "", IDC_INPUT_LANG_STR, 73, 7, 129, 8
|
||||||
LTEXT "&Ðîçêëàäêà êëàâ³àòóðè àáî çàñ³á ââîäó (IME):", -1, 7, 21, 110, 10
|
LTEXT "&Ðîçêëàäêà êëàâ³àòóðè àáî çàñ³á ââîäó (IME):", -1, 7, 21, 110, 10
|
||||||
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 60, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
COMBOBOX IDC_KB_LAYOUT_IME_COMBO, 7, 32, 212, 150, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL
|
||||||
DEFPUSHBUTTON "OK", IDOK, 116, 53, 52, 14
|
DEFPUSHBUTTON "OK", IDOK, 116, 53, 52, 14
|
||||||
PUSHBUTTON "Ñêàñóâàòè", IDCANCEL, 169, 53, 52, 14
|
PUSHBUTTON "Ñêàñóâàòè", IDCANCEL, 169, 53, 52, 14
|
||||||
END
|
END
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
#define IDC_KEYBOARD_LO_COMBO 1011
|
#define IDC_KEYBOARD_LO_COMBO 1011
|
||||||
#define IDC_USE_SK 1012
|
#define IDC_USE_SK 1012
|
||||||
#define IDC_KB_LAYOUT_IME_COMBO 1013
|
#define IDC_KB_LAYOUT_IME_COMBO 1013
|
||||||
|
#define IDC_INPUT_LANG_STR 1014
|
||||||
|
|
||||||
/* IDS */
|
/* IDS */
|
||||||
#define IDS_CPLSYSTEMNAME 1
|
#define IDS_CPLSYSTEMNAME 1
|
||||||
|
|
|
@ -14,6 +14,8 @@
|
||||||
|
|
||||||
static HWND MainDlgWnd;
|
static HWND MainDlgWnd;
|
||||||
static HIMAGELIST hImgList;
|
static HIMAGELIST hImgList;
|
||||||
|
// for SaveInputLang()
|
||||||
|
static INT OldLayoutNum;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
@ -25,6 +27,15 @@ typedef struct
|
||||||
} LAYOUT_ITEM, *LPLAYOUT_ITEM;
|
} LAYOUT_ITEM, *LPLAYOUT_ITEM;
|
||||||
|
|
||||||
|
|
||||||
|
static INT
|
||||||
|
IsLayoutSelected()
|
||||||
|
{
|
||||||
|
INT iIndex = (INT) SendMessage(GetDlgItem(MainDlgWnd, IDC_KEYLAYOUT_LIST),
|
||||||
|
LVM_GETNEXTITEM, -1, LVNI_FOCUSED);
|
||||||
|
|
||||||
|
return iIndex;
|
||||||
|
}
|
||||||
|
|
||||||
static HICON
|
static HICON
|
||||||
CreateLayoutIcon(LPTSTR szInd)
|
CreateLayoutIcon(LPTSTR szInd)
|
||||||
{
|
{
|
||||||
|
@ -85,6 +96,51 @@ CreateLayoutIcon(LPTSTR szInd)
|
||||||
return hIcon;
|
return hIcon;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BOOL
|
||||||
|
GetLayoutID(LPTSTR szLayoutNum, LPTSTR szLCID)
|
||||||
|
{
|
||||||
|
DWORD dwBufLen;
|
||||||
|
DWORD dwRes;
|
||||||
|
HKEY hKey;
|
||||||
|
TCHAR szTempLCID[CCH_LAYOUT_ID + 1];
|
||||||
|
|
||||||
|
// Get the Layout ID
|
||||||
|
if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Preload"), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
dwBufLen = sizeof(szTempLCID);
|
||||||
|
dwRes = RegQueryValueEx(hKey, szLayoutNum, NULL, NULL, (LPBYTE)szTempLCID, &dwBufLen);
|
||||||
|
|
||||||
|
if (dwRes != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Look for a substitude of this layout
|
||||||
|
if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Substitutes"), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
dwBufLen = sizeof(szTempLCID);
|
||||||
|
|
||||||
|
if (RegQueryValueEx(hKey, szTempLCID, NULL, NULL, (LPBYTE)szLCID, &dwBufLen) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
// No substitute found, then use the old LCID
|
||||||
|
lstrcpy(szLCID, szTempLCID);
|
||||||
|
}
|
||||||
|
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Substitutes key couldn't be opened, so use the old LCID
|
||||||
|
lstrcpy(szLCID, szTempLCID);
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
GetLayoutName(LPCTSTR szLCID, LPTSTR szName)
|
GetLayoutName(LPCTSTR szLCID, LPTSTR szName)
|
||||||
{
|
{
|
||||||
|
@ -312,6 +368,195 @@ DeleteLayout(VOID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static VOID
|
||||||
|
SaveInputLang(HWND hDlg)
|
||||||
|
{
|
||||||
|
HKEY hKey, hSubKey;
|
||||||
|
TCHAR szLayoutID[CCH_LAYOUT_ID + 1], szLayoutNum[CCH_ULONG_DEC + 1],
|
||||||
|
szPreload[CCH_LAYOUT_ID + 1], LangID[CCH_LAYOUT_ID + 1],
|
||||||
|
Lang[MAX_PATH], SubPath[MAX_PATH];
|
||||||
|
PTSTR pts;
|
||||||
|
INT iLayout;
|
||||||
|
DWORD dwSize;
|
||||||
|
LANGID langid;
|
||||||
|
|
||||||
|
iLayout = SendMessage(GetDlgItem(hDlg, IDC_KB_LAYOUT_IME_COMBO), CB_GETCURSEL, 0, 0);
|
||||||
|
if (iLayout == CB_ERR) return;
|
||||||
|
|
||||||
|
pts = (PTSTR) SendMessage(GetDlgItem(hDlg, IDC_KB_LAYOUT_IME_COMBO), CB_GETITEMDATA, iLayout, 0);
|
||||||
|
|
||||||
|
_ultot(OldLayoutNum, szLayoutNum, 10);
|
||||||
|
if (!GetLayoutID(szLayoutNum, szLayoutID)) return;
|
||||||
|
|
||||||
|
// if old layout = selected layout
|
||||||
|
if (_tcscmp(szLayoutID, pts) == 0) return;
|
||||||
|
|
||||||
|
if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Preload"), 0,
|
||||||
|
KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
dwSize = sizeof(szPreload);
|
||||||
|
if (RegQueryValueEx(hKey, szLayoutNum, NULL, NULL, (LPBYTE)szPreload, &dwSize) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
langid = (LANGID)_tcstoul(szPreload, NULL, 16);
|
||||||
|
GetLocaleInfo(langid, LOCALE_ILANGUAGE, Lang, sizeof(Lang) / sizeof(TCHAR));
|
||||||
|
wsprintf(LangID, _T("0000%s"), Lang);
|
||||||
|
|
||||||
|
if (szPreload[0] == 'd')
|
||||||
|
{
|
||||||
|
if (_tcscmp(LangID, pts) == 0)
|
||||||
|
{
|
||||||
|
if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Substitutes"), 0,
|
||||||
|
KEY_ALL_ACCESS, &hSubKey) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
if (RegDeleteValue(hSubKey, szPreload) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
RegCloseKey(hSubKey);
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
RegCloseKey(hSubKey);
|
||||||
|
|
||||||
|
RegSetValueEx(hKey, szLayoutNum, 0, REG_SZ, (LPBYTE)pts,
|
||||||
|
(DWORD)((CCH_LAYOUT_ID + 1) * sizeof(TCHAR)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Substitutes"), 0,
|
||||||
|
KEY_ALL_ACCESS, &hSubKey) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
RegSetValueEx(hSubKey, szPreload, 0, REG_SZ, (LPBYTE)pts,
|
||||||
|
(DWORD)((CCH_LAYOUT_ID + 1) * sizeof(TCHAR)));
|
||||||
|
|
||||||
|
RegCloseKey(hSubKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (_tcscmp(LangID, pts) == 0)
|
||||||
|
{
|
||||||
|
RegSetValueEx(hKey, szLayoutNum, 0, REG_SZ, (LPBYTE)pts,
|
||||||
|
(DWORD)((CCH_LAYOUT_ID + 1) * sizeof(TCHAR)));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (RegCreateKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Substitutes"), 0, NULL,
|
||||||
|
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
|
||||||
|
NULL, &hSubKey, NULL) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
wsprintf(SubPath, _T("d%03d%s"), GetLayoutCount(Lang)-1, Lang);
|
||||||
|
|
||||||
|
RegSetValueEx(hSubKey, SubPath, 0, REG_SZ, (LPBYTE)pts,
|
||||||
|
(DWORD)((CCH_LAYOUT_ID + 1) * sizeof(TCHAR)));
|
||||||
|
|
||||||
|
RegSetValueEx(hKey, szLayoutNum, 0, REG_SZ, (LPBYTE)SubPath,
|
||||||
|
(DWORD)((CCH_LAYOUT_ID + 1) * sizeof(TCHAR)));
|
||||||
|
|
||||||
|
RegCloseKey(hSubKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static VOID
|
||||||
|
InitInputLangPropDlg(HWND hDlg)
|
||||||
|
{
|
||||||
|
HKEY hKey, hSubKey;
|
||||||
|
LVITEM item;
|
||||||
|
INT LayoutNum;
|
||||||
|
TCHAR szLayoutNum[10 + 1], szPreload[CCH_LAYOUT_ID + 1],
|
||||||
|
szTmp[CCH_LAYOUT_ID + 1], szName[MAX_PATH];
|
||||||
|
DWORD dwSize;
|
||||||
|
LANGID langid;
|
||||||
|
|
||||||
|
ZeroMemory(&item, sizeof(LVITEM));
|
||||||
|
|
||||||
|
item.mask = LVIF_PARAM;
|
||||||
|
item.iItem = IsLayoutSelected();
|
||||||
|
|
||||||
|
(VOID) ListView_GetItem(GetDlgItem(MainDlgWnd, IDC_KEYLAYOUT_LIST), &item);
|
||||||
|
LayoutNum = (INT) item.lParam;
|
||||||
|
OldLayoutNum = LayoutNum;
|
||||||
|
|
||||||
|
if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Preload"), 0,
|
||||||
|
KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
_ultot(LayoutNum, szLayoutNum, 10);
|
||||||
|
|
||||||
|
dwSize = sizeof(szPreload);
|
||||||
|
RegQueryValueEx(hKey, szLayoutNum, NULL, NULL, (LPBYTE)szPreload, &dwSize);
|
||||||
|
|
||||||
|
langid = (LANGID)_tcstoul(szPreload, NULL, 16);
|
||||||
|
GetLocaleInfo(langid, LOCALE_SLANGUAGE, (LPTSTR)szName, sizeof(szName) / sizeof(TCHAR));
|
||||||
|
SetWindowText(GetDlgItem(hDlg, IDC_INPUT_LANG_STR), szName);
|
||||||
|
|
||||||
|
if (szPreload[0] == 'd')
|
||||||
|
{
|
||||||
|
if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Substitutes"), 0,
|
||||||
|
KEY_ALL_ACCESS, &hSubKey) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
if (RegQueryValueEx(hSubKey, szPreload, NULL, NULL, (LPBYTE)szTmp, &dwSize) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
RegCloseKey(hSubKey);
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lstrcpy(szPreload, szTmp);
|
||||||
|
RegCloseKey(hSubKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GetLayoutName(szPreload, szName))
|
||||||
|
{
|
||||||
|
SendMessage(GetDlgItem(hDlg, IDC_KB_LAYOUT_IME_COMBO),
|
||||||
|
CB_SELECTSTRING, (WPARAM)-1, (LPARAM)szName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
INT_PTR CALLBACK
|
||||||
|
InputLangPropDlgProc(HWND hDlg,
|
||||||
|
UINT message,
|
||||||
|
WPARAM wParam,
|
||||||
|
LPARAM lParam)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(lParam);
|
||||||
|
|
||||||
|
switch (message)
|
||||||
|
{
|
||||||
|
case WM_INITDIALOG:
|
||||||
|
CreateKeyboardLayoutList(GetDlgItem(hDlg, IDC_KB_LAYOUT_IME_COMBO));
|
||||||
|
InitInputLangPropDlg(hDlg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_COMMAND:
|
||||||
|
switch (LOWORD(wParam))
|
||||||
|
{
|
||||||
|
case IDOK:
|
||||||
|
SaveInputLang(hDlg);
|
||||||
|
UpdateLayoutsList();
|
||||||
|
EndDialog(hDlg,LOWORD(wParam));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDCANCEL:
|
||||||
|
EndDialog(hDlg,LOWORD(wParam));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
/* Property page dialog callback */
|
/* Property page dialog callback */
|
||||||
INT_PTR CALLBACK
|
INT_PTR CALLBACK
|
||||||
SettingPageProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
|
SettingPageProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
|
||||||
|
@ -329,8 +574,6 @@ SettingPageProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
|
||||||
hImgList = ImageList_Create(16, 16, ILC_COLOR8 | ILC_MASK, 0, 1);
|
hImgList = ImageList_Create(16, 16, ILC_COLOR8 | ILC_MASK, 0, 1);
|
||||||
InitLangList(hwndDlg);
|
InitLangList(hwndDlg);
|
||||||
(VOID) ListView_SetImageList(GetDlgItem(MainDlgWnd, IDC_KEYLAYOUT_LIST), hImgList, LVSIL_SMALL);
|
(VOID) ListView_SetImageList(GetDlgItem(MainDlgWnd, IDC_KEYLAYOUT_LIST), hImgList, LVSIL_SMALL);
|
||||||
EnableWindow(GetDlgItem(hwndDlg, IDC_PROP_BUTTON),FALSE);
|
|
||||||
EnableWindow(GetDlgItem(hwndDlg, IDC_SET_DEFAULT),FALSE);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WM_NOTIFY:
|
case WM_NOTIFY:
|
||||||
|
@ -363,11 +606,16 @@ SettingPageProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IDC_PROP_BUTTON:
|
case IDC_PROP_BUTTON:
|
||||||
|
if (IsLayoutSelected() != -1)
|
||||||
DialogBox(hApplet,
|
DialogBox(hApplet,
|
||||||
MAKEINTRESOURCE(IDD_INPUT_LANG_PROP),
|
MAKEINTRESOURCE(IDD_INPUT_LANG_PROP),
|
||||||
hwndDlg,
|
hwndDlg,
|
||||||
InputLangPropDlgProc);
|
InputLangPropDlgProc);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case IDC_SET_DEFAULT:
|
||||||
|
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WM_DESTROY:
|
case WM_DESTROY:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue