Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenkeysettings.c
Go to the documentation of this file.
00001 /* 00002 * 00003 * PROJECT: input.dll 00004 * FILE: dll/win32/input/keysettings.c 00005 * PURPOSE: input.dll 00006 * PROGRAMMER: Dmitry Chapyshev (dmitry@reactos.org) 00007 * Colin Finck 00008 * UPDATE HISTORY: 00009 * 06-09-2007 Created 00010 */ 00011 00012 #include "input.h" 00013 00014 static HWND hKeySettingsWnd; 00015 00016 static VOID 00017 AddListColumn(HWND hDlg) 00018 { 00019 LV_COLUMN column; 00020 HWND hList = GetDlgItem(hDlg, IDC_KEY_LISTVIEW); 00021 00022 ZeroMemory(&column, sizeof(LV_COLUMN)); 00023 column.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM; 00024 00025 column.fmt = LVCFMT_LEFT; 00026 column.iSubItem = 0; 00027 column.pszText = _T(""); 00028 column.cx = 210; 00029 (VOID) ListView_InsertColumn(hList, 0, &column); 00030 00031 column.fmt = LVCFMT_RIGHT; 00032 column.cx = 145; 00033 column.iSubItem = 1; 00034 column.pszText = _T(""); 00035 (VOID) ListView_InsertColumn(hList, 1, &column); 00036 } 00037 00038 static DWORD 00039 GetAttributes() 00040 { 00041 DWORD dwValue, dwType, dwSize; 00042 HKEY hKey; 00043 00044 if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout"), 0, KEY_QUERY_VALUE, &hKey) != ERROR_SUCCESS) 00045 return 0x0; 00046 00047 dwType = REG_DWORD; 00048 dwSize = sizeof(DWORD); 00049 00050 if (RegQueryValueEx(hKey, _T("Attributes"), NULL, &dwType, (LPBYTE)&dwValue, &dwSize) != ERROR_SUCCESS) 00051 { 00052 RegCloseKey(hKey); 00053 return 0x0; 00054 } 00055 00056 RegCloseKey(hKey); 00057 return dwValue; 00058 } 00059 00060 static VOID 00061 SaveKeySettings(HWND hDlg) 00062 { 00063 HKEY hKey; 00064 DWORD dwValue; 00065 00066 if (SendDlgItemMessage(hDlg, IDC_PRESS_CL_KEY_RB, BM_GETCHECK, 0, 0) == BST_CHECKED) 00067 dwValue = 0x0; 00068 else 00069 dwValue = 0x10000; 00070 00071 if (RegCreateKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout"), 0, NULL, 00072 REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 00073 NULL, &hKey, NULL) == ERROR_SUCCESS) 00074 { 00075 RegSetValueEx(hKey, _T("Attributes"), 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD)); 00076 00077 RegCloseKey(hKey); 00078 } 00079 } 00080 00081 static VOID 00082 InitKeySettingsDlg(HWND hDlg) 00083 { 00084 TCHAR szHotkey[1 + 1], szLangHotkey[1 + 1], szLayoutHotkey[1 + 1], 00085 szTitle[MAX_PATH], szText[MAX_PATH]; 00086 LV_ITEM item = {0}; 00087 HWND hHotkeyList = GetDlgItem(hDlg, IDC_KEY_LISTVIEW); 00088 INT i; 00089 00090 if (GetAttributes() != 0x0) 00091 SendDlgItemMessage(hDlg, IDC_PRESS_SHIFT_KEY_RB, BM_SETCHECK, 1, 1); 00092 else 00093 SendDlgItemMessage(hDlg, IDC_PRESS_CL_KEY_RB, BM_SETCHECK, 1, 1); 00094 00095 if (!GetHotkeys(szHotkey, szLangHotkey, szLayoutHotkey)) 00096 return; 00097 00098 if (!LoadString(hApplet, IDS_SWITCH_BET_INLANG, szTitle, sizeof(szTitle) / sizeof(TCHAR))) 00099 return; 00100 00101 if (_tcscmp(szLangHotkey, _T("2")) == 0) 00102 LoadString(hApplet, IDS_CTRL_SHIFT, szText, sizeof(szText) / sizeof(TCHAR)); 00103 else if (_tcscmp(szLangHotkey, _T("1")) == 0) 00104 LoadString(hApplet, IDS_LEFT_ALT_SHIFT, szText, sizeof(szText) / sizeof(TCHAR)); 00105 else 00106 LoadString(hApplet, IDS_NONE, szText, sizeof(szText) / sizeof(TCHAR)); 00107 00108 item.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE; 00109 item.pszText = szTitle; 00110 item.iItem = 0; 00111 i = ListView_InsertItem(hHotkeyList, &item); 00112 00113 ListView_SetItemText(hHotkeyList, i, 1, szText); 00114 00115 (VOID) ListView_SetHotItem(hHotkeyList, i); 00116 ListView_SetItemState(hHotkeyList, i, LVIS_SELECTED, LVIS_OVERLAYMASK); 00117 } 00118 00119 VOID 00120 UpdateKeySettingsList() 00121 { 00122 (VOID) ListView_DeleteAllItems(GetDlgItem(hKeySettingsWnd, IDC_KEY_LISTVIEW)); 00123 InitKeySettingsDlg(hKeySettingsWnd); 00124 } 00125 00126 INT_PTR CALLBACK 00127 KeySettingsDlgProc(HWND hDlg, 00128 UINT message, 00129 WPARAM wParam, 00130 LPARAM lParam) 00131 { 00132 UNREFERENCED_PARAMETER(lParam); 00133 00134 switch (message) 00135 { 00136 case WM_INITDIALOG: 00137 hKeySettingsWnd = hDlg; 00138 AddListColumn(hDlg); 00139 (VOID) ListView_SetExtendedListViewStyle(GetDlgItem(hDlg, IDC_KEY_LISTVIEW), 00140 LVS_EX_FULLROWSELECT); 00141 InitKeySettingsDlg(hDlg); 00142 break; 00143 00144 case WM_COMMAND: 00145 switch (LOWORD(wParam)) 00146 { 00147 case IDC_CHANGE_KEY_SEQ_BTN: 00148 DialogBox(hApplet, 00149 MAKEINTRESOURCE(IDD_CHANGE_KEY_SEQ), 00150 hDlg, 00151 ChangeKeySeqDlgProc); 00152 break; 00153 00154 case IDOK: 00155 SaveKeySettings(hDlg); 00156 EndDialog(hDlg, LOWORD(wParam)); 00157 break; 00158 00159 case IDCANCEL: 00160 EndDialog(hDlg, LOWORD(wParam)); 00161 break; 00162 } 00163 break; 00164 } 00165 00166 return FALSE; 00167 } 00168 00169 /* EOF */ Generated on Sat May 26 2012 04:19:44 for ReactOS by
1.7.6.1
|