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>
13 const TCHAR g_szGeneralRegKey
[] = _T("Software\\Microsoft\\CharMap");
16 LONG
QueryStringValue(HKEY hKey
, LPCTSTR lpSubKey
, LPCTSTR lpValueName
, LPTSTR pszBuffer
, DWORD dwBufferLen
)
24 lResult
= RegOpenKey(hKey
, lpSubKey
, &hSubKey
);
25 if (lResult
!= ERROR_SUCCESS
)
30 cbData
= (dwBufferLen
- 1) * sizeof(*pszBuffer
);
31 lResult
= RegQueryValueEx(hKey
, lpValueName
, NULL
, &dwType
, (LPBYTE
) pszBuffer
, &cbData
);
32 if (lResult
!= ERROR_SUCCESS
)
40 pszBuffer
[cbData
/ sizeof(*pszBuffer
)] = _T('\0');
43 if (lResult
!= ERROR_SUCCESS
)
44 pszBuffer
[0] = _T('\0');
50 extern void LoadSettings(void)
55 if (RegOpenKeyEx(HKEY_CURRENT_USER
, g_szGeneralRegKey
, 0, KEY_READ
, &hKey
) == ERROR_SUCCESS
)
57 TCHAR szBuffer
[MAX_PATH
];
59 unsigned long type
= REG_DWORD
, size
= 1024;
61 /* Restore last selected font */
62 if (QueryStringValue(HKEY_CURRENT_USER
, g_szGeneralRegKey
, _T("Font"), szBuffer
, (sizeof(szBuffer
)/sizeof(szBuffer
[0]))) == ERROR_SUCCESS
)
65 hWnd
= GetDlgItem(hCharmapDlg
, IDC_FONTCOMBO
);
67 //Search for match and return index if match found
68 iItemIndex
= ComboBox_FindStringExact(hWnd
, -1, szBuffer
);
69 if(iItemIndex
!= CB_ERR
)
71 ComboBox_SetCurSel(hWnd
, iItemIndex
);
72 ChangeMapFont(hCharmapDlg
);
76 /* Restore last selected character set */
77 if (QueryStringValue(HKEY_CURRENT_USER
, g_szGeneralRegKey
, _T("CodePage"), szBuffer
, (sizeof(szBuffer
)/sizeof(szBuffer
[0]))) == ERROR_SUCCESS
)
80 hWnd
= GetDlgItem(hCharmapDlg
, IDC_COMBO_CHARSET
);
82 iItemIndex
= ComboBox_FindStringExact(hWnd
, -1, szBuffer
);
83 if(iItemIndex
!= CB_ERR
)
85 ComboBox_SetCurSel(hWnd
, iItemIndex
);
89 RegQueryValueEx(hKey
, _T("Advanced"), NULL
, &type
, (LPBYTE
)&dwAdvanChecked
, &size
);
90 if(dwAdvanChecked
== TRUE
)
91 SendDlgItemMessage(hCharmapDlg
, IDC_CHECK_ADVANCED
, BM_CLICK
, (dwAdvanChecked
? MF_CHECKED
: MF_UNCHECKED
), 0);
97 /* Default font seems to be Arial */
98 hWnd
= GetDlgItem(hCharmapDlg
, IDC_FONTCOMBO
);
100 iItemIndex
= ComboBox_FindStringExact(hWnd
, -1, _T("Arial"));
101 if(iItemIndex
!= CB_ERR
)
103 ComboBox_SetCurSel(hWnd
, iItemIndex
);
104 ChangeMapFont(hCharmapDlg
);
109 extern void SaveSettings(void)
113 if (RegCreateKey(HKEY_CURRENT_USER
, g_szGeneralRegKey
, &hKey
) == ERROR_SUCCESS
)
115 if (RegOpenKeyEx(HKEY_CURRENT_USER
, g_szGeneralRegKey
, 0, KEY_SET_VALUE
, &hKey
) == ERROR_SUCCESS
)
117 TCHAR szBuffer
[MAX_PATH
];
119 hWnd
= GetDlgItem(hCharmapDlg
, IDC_FONTCOMBO
);
120 ComboBox_GetText(hWnd
, szBuffer
, MAX_PATH
);
122 if(szBuffer
!= NULL
&& *szBuffer
!= '\0')
123 RegSetValueEx(hKey
, _T("Font"), 0, REG_SZ
, (LPBYTE
) szBuffer
, (DWORD
) MAX_PATH
);
125 hWnd
= GetDlgItem(hCharmapDlg
, IDC_COMBO_CHARSET
);
126 ComboBox_GetText(hWnd
, szBuffer
, MAX_PATH
);
128 if(szBuffer
!= NULL
&& *szBuffer
!= '\0')
129 RegSetValueEx(hKey
, _T("CodePage"), 0, REG_SZ
, (LPBYTE
) szBuffer
, (DWORD
) MAX_PATH
);
131 RegSetValueEx(hKey
, _T("Advanced"), 0, REG_DWORD
, (LPBYTE
)&Settings
.IsAdvancedView
, (DWORD
) sizeof(DWORD
));