#include <windows.h>
BOOL GetRegVal(char *subKey, char *name, void *p, int len)
{
HKEY hKey;
DWORD valType, valSize = (DWORD)len;
LONG r;
if (! RegOpenKeyEx(HKEY_CURRENT_USER, subKey, 0, KEY_ALL_ACCESS,
&hKey)) {
r = RegQueryValueEx(hKey, name, NULL, &valType, (LPBYTE)p, &valSize);
RegCloseKey(hKey);
if (r)
return FALSE;
else
return TRUE;
} else
return FALSE;
}
void SetRegVal(char *subKey, char *name, void *p, int len)
{
HKEY hKey;
DWORD disposition;
RegCreateKeyEx(HKEY_CURRENT_USER, subKey, 0, NULL,
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey,
&disposition);
RegSetValueEx(hKey, name, 0, REG_BINARY, (CONST BYTE*)p, (DWORD)len);
RegCloseKey(hKey);
}
BOOL GetPlacement(char *subKey, RECT *rect)
{
if (GetRegVal(subKey, "Placement", rect, sizeof(RECT)))
return TRUE;
else
return FALSE;
}
void SavePlacement(HWND hwnd, char *subKey)
{
RECT rect;
GetWindowRect(hwnd, &rect);
SetRegVal(subKey, "Placement", &rect, sizeof(RECT));
}
BOOL SaveKey(char *subKey, char *fileName)
{
HKEY hKey;
if (! RegOpenKeyEx(HKEY_CURRENT_USER, subKey, 0, KEY_ALL_ACCESS,
&hKey)) {
if (RegSaveKey(hKey, (LPCTSTR)fileName, NULL)) {
RegCloseKey(hKey);
return FALSE;
}
RegCloseKey(hKey);
return TRUE;
} else
return FALSE;
}
BOOL RestoreKey(char *subKey, char *fileName)
{
HKEY hKey;
if (! RegOpenKeyEx(HKEY_CURRENT_USER, subKey, 0, KEY_ALL_ACCESS,
&hKey)) {
if (RegRestoreKey(hKey, (LPCTSTR)fileName, 0)) {
RegCloseKey(hKey);
return FALSE;
}
RegCloseKey(hKey);
return TRUE;
} else
return FALSE;
}