2 * PROJECT: ReactOS Character Map
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: base/applications/charmap/settings.c
5 * PURPOSE: save/load settings
6 * COPYRIGHT: Copyright 2012 Edijs Kolesnikovics <terminedijs@yahoo.com>
16 const TCHAR g_szGeneralRegKey
[] = _T("Software\\Microsoft\\CharMap");
19 LONG
QueryStringValue(HKEY hKey
, LPCTSTR lpSubKey
, LPCTSTR lpValueName
, LPTSTR pszBuffer
, DWORD dwBufferLen
)
27 lResult
= RegOpenKey(hKey
, lpSubKey
, &hSubKey
);
28 if (lResult
!= ERROR_SUCCESS
)
33 cbData
= (dwBufferLen
- 1) * sizeof(*pszBuffer
);
34 lResult
= RegQueryValueEx(hKey
, lpValueName
, NULL
, &dwType
, (LPBYTE
) pszBuffer
, &cbData
);
35 if (lResult
!= ERROR_SUCCESS
)
43 pszBuffer
[cbData
/ sizeof(*pszBuffer
)] = _T('\0');
46 if (lResult
!= ERROR_SUCCESS
)
47 pszBuffer
[0] = _T('\0');
53 extern void LoadSettings(void)
58 if (RegOpenKeyEx(HKEY_CURRENT_USER
, g_szGeneralRegKey
, 0, KEY_READ
, &hKey
) == ERROR_SUCCESS
)
60 TCHAR szBuffer
[MAX_PATH
];
62 unsigned long type
= REG_DWORD
, size
= 1024;
64 /* Restore last selected font */
65 if (QueryStringValue(HKEY_CURRENT_USER
, g_szGeneralRegKey
, _T("Font"), szBuffer
, (sizeof(szBuffer
)/sizeof(szBuffer
[0]))) == ERROR_SUCCESS
)
68 hWnd
= GetDlgItem(hCharmapDlg
, IDC_FONTCOMBO
);
70 //Search for match and return index if match found
71 iItemIndex
= ComboBox_FindStringExact(hWnd
, -1, szBuffer
);
72 if(iItemIndex
!= CB_ERR
)
74 ComboBox_SetCurSel(hWnd
, iItemIndex
);
75 ChangeMapFont(hCharmapDlg
);
79 /* Restore last selected character set */
80 if (QueryStringValue(HKEY_CURRENT_USER
, g_szGeneralRegKey
, _T("CodePage"), szBuffer
, (sizeof(szBuffer
)/sizeof(szBuffer
[0]))) == ERROR_SUCCESS
)
83 hWnd
= GetDlgItem(hCharmapDlg
, IDC_COMBO_CHARSET
);
85 iItemIndex
= ComboBox_FindStringExact(hWnd
, -1, szBuffer
);
86 if(iItemIndex
!= CB_ERR
)
88 ComboBox_SetCurSel(hWnd
, iItemIndex
);
92 RegQueryValueEx(hKey
, _T("Advanced"), NULL
, &type
, (LPBYTE
)&dwAdvanChecked
, &size
);
93 if(dwAdvanChecked
== TRUE
)
94 SendDlgItemMessage(hCharmapDlg
, IDC_CHECK_ADVANCED
, BM_CLICK
, (dwAdvanChecked
? MF_CHECKED
: MF_UNCHECKED
), 0);
100 /* Default font seems to be Arial */
101 hWnd
= GetDlgItem(hCharmapDlg
, IDC_FONTCOMBO
);
103 iItemIndex
= ComboBox_FindStringExact(hWnd
, -1, _T("Arial"));
104 if(iItemIndex
!= CB_ERR
)
106 ComboBox_SetCurSel(hWnd
, iItemIndex
);
107 ChangeMapFont(hCharmapDlg
);
112 extern void SaveSettings(void)
116 if (RegCreateKey(HKEY_CURRENT_USER
, g_szGeneralRegKey
, &hKey
) == ERROR_SUCCESS
)
118 if (RegOpenKeyEx(HKEY_CURRENT_USER
, g_szGeneralRegKey
, 0, KEY_SET_VALUE
, &hKey
) == ERROR_SUCCESS
)
120 TCHAR szBuffer
[MAX_PATH
];
122 hWnd
= GetDlgItem(hCharmapDlg
, IDC_FONTCOMBO
);
123 ComboBox_GetText(hWnd
, szBuffer
, MAX_PATH
);
125 if(*szBuffer
!= '\0')
126 RegSetValueEx(hKey
, _T("Font"), 0, REG_SZ
, (LPBYTE
) szBuffer
, (DWORD
) MAX_PATH
);
128 hWnd
= GetDlgItem(hCharmapDlg
, IDC_COMBO_CHARSET
);
129 ComboBox_GetText(hWnd
, szBuffer
, MAX_PATH
);
131 if(*szBuffer
!= '\0')
132 RegSetValueEx(hKey
, _T("CodePage"), 0, REG_SZ
, (LPBYTE
) szBuffer
, (DWORD
) MAX_PATH
);
134 RegSetValueEx(hKey
, _T("Advanced"), 0, REG_DWORD
, (LPBYTE
)&Settings
.IsAdvancedView
, (DWORD
) sizeof(DWORD
));