mirror of
https://github.com/reactos/reactos.git
synced 2024-12-26 17:14:41 +00:00
Updated with an improvement to the registry save/restore module.
svn path=/trunk/; revision=3274
This commit is contained in:
parent
f4629b5599
commit
51278afbc0
4 changed files with 98 additions and 23 deletions
|
@ -1,3 +1,6 @@
|
||||||
|
#include <defines.h>
|
||||||
|
#include <reactos/resource.h>
|
||||||
|
|
||||||
//Microsoft Developer Studio generated resource script.
|
//Microsoft Developer Studio generated resource script.
|
||||||
//
|
//
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
|
@ -167,6 +170,7 @@ END
|
||||||
// Accelerator
|
// Accelerator
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
IDR_ACCELERATOR ACCELERATORS DISCARDABLE
|
IDR_ACCELERATOR ACCELERATORS DISCARDABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
VK_F2, ID_VIEW_DEGREES, VIRTKEY, NOINVERT
|
VK_F2, ID_VIEW_DEGREES, VIRTKEY, NOINVERT
|
||||||
|
@ -177,6 +181,50 @@ BEGIN
|
||||||
VK_F7, ID_VIEW_OCTAL, VIRTKEY, NOINVERT
|
VK_F7, ID_VIEW_OCTAL, VIRTKEY, NOINVERT
|
||||||
VK_F8, ID_VIEW_BINARY, VIRTKEY, NOINVERT
|
VK_F8, ID_VIEW_BINARY, VIRTKEY, NOINVERT
|
||||||
END
|
END
|
||||||
|
#endif // _MSC_VER
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Version
|
||||||
|
//
|
||||||
|
|
||||||
|
VS_VERSION_INFO VERSIONINFO
|
||||||
|
FILEVERSION RES_UINT_FV_MAJOR,RES_UINT_FV_MINOR,RES_UINT_FV_REVISION,RES_UINT_FV_BUILD
|
||||||
|
PRODUCTVERSION RES_UINT_PV_MAJOR,RES_UINT_PV_MINOR,RES_UINT_PV_REVISION,RES_UINT_PV_BUILD
|
||||||
|
FILEFLAGSMASK 0x3fL
|
||||||
|
#ifdef _DEBUG
|
||||||
|
FILEFLAGS 0x1L
|
||||||
|
#else
|
||||||
|
FILEFLAGS 0x0L
|
||||||
|
#endif
|
||||||
|
FILEOS 0x40004L
|
||||||
|
FILETYPE 0x1L
|
||||||
|
FILESUBTYPE 0x0L
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "040904b0"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Comments", "Absolutely no warranties whatsoever - Use at your own risk\0"
|
||||||
|
VALUE "CompanyName", RES_STR_COMPANY_NAME
|
||||||
|
VALUE "FileDescription", "ReactOS Calculator by Robert Dickenson\0"
|
||||||
|
VALUE "FileVersion", "1, 0, 0, 1\0"
|
||||||
|
VALUE "InternalName", "calc\0"
|
||||||
|
VALUE "LegalCopyright", "Copyright © 2002 Robert Dickenson\0"
|
||||||
|
VALUE "LegalTrademarks", "\0"
|
||||||
|
VALUE "OriginalFilename", "calc.exe\0"
|
||||||
|
VALUE "PrivateBuild", "\0"
|
||||||
|
VALUE "ProductName", RES_STR_PRODUCT_NAME
|
||||||
|
VALUE "ProductVersion", RES_STR_PRODUCT_VERSION
|
||||||
|
VALUE "SpecialBuild", "Non-versioned Development Beta Release\0"
|
||||||
|
END
|
||||||
|
END
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Translation", 0xc09, 1200
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -187,6 +235,9 @@ END
|
||||||
STRINGTABLE DISCARDABLE
|
STRINGTABLE DISCARDABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APP_TITLE "ReactOS Calculator"
|
IDS_APP_TITLE "ReactOS Calculator"
|
||||||
|
IDS_APP_REG_KEY "\\Calculator"
|
||||||
|
IDS_APP_REG_PATH RES_STR_ROSAPP_REGISTRY_ROOT
|
||||||
|
|
||||||
END
|
END
|
||||||
|
|
||||||
#endif // English (Australia) resources
|
#endif // English (Australia) resources
|
||||||
|
|
|
@ -38,7 +38,7 @@ LIBS = -lgdi32 -luser32 -lkernel32 -lcomctl32
|
||||||
|
|
||||||
all: $(TARGET).exe
|
all: $(TARGET).exe
|
||||||
|
|
||||||
$(TARGET).res: $(TARGET).rc
|
#$(TARGET).res: $(TARGET).rc
|
||||||
|
|
||||||
$(TARGET).exe: $(OBJS) $(TARGET).coff
|
$(TARGET).exe: $(OBJS) $(TARGET).coff
|
||||||
$(CC) -Wl,--subsystem,windows -o $(TARGET).exe $(OBJS) $(TARGET).coff $(LIBS)
|
$(CC) -Wl,--subsystem,windows -o $(TARGET).exe $(OBJS) $(TARGET).coff $(LIBS)
|
||||||
|
|
|
@ -11,6 +11,10 @@
|
||||||
#define IDR_CALC_SCIENTIFIC 104
|
#define IDR_CALC_SCIENTIFIC 104
|
||||||
#define IDS_APP_TITLE 105
|
#define IDS_APP_TITLE 105
|
||||||
#define IDR_ACCELERATOR 106
|
#define IDR_ACCELERATOR 106
|
||||||
|
#define IDS_APP_REG_KEY 107
|
||||||
|
#define IDS_APP_REG_PATH 108
|
||||||
|
|
||||||
|
|
||||||
#define IDC_BUTTON1 1000
|
#define IDC_BUTTON1 1000
|
||||||
#define IDC_BUTTON2 1001
|
#define IDC_BUTTON2 1001
|
||||||
#define IDC_EDIT1 1002
|
#define IDC_EDIT1 1002
|
||||||
|
@ -33,7 +37,7 @@
|
||||||
//
|
//
|
||||||
#ifdef APSTUDIO_INVOKED
|
#ifdef APSTUDIO_INVOKED
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 107
|
#define _APS_NEXT_RESOURCE_VALUE 109
|
||||||
#define _APS_NEXT_COMMAND_VALUE 40015
|
#define _APS_NEXT_COMMAND_VALUE 40015
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1003
|
#define _APS_NEXT_CONTROL_VALUE 1003
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
|
|
|
@ -23,12 +23,14 @@
|
||||||
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
|
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <tchar.h>
|
#include <tchar.h>
|
||||||
|
#include <assert.h>
|
||||||
|
#define ASSERT assert
|
||||||
|
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
|
|
||||||
|
|
||||||
BOOL CheckResult(LONG error)
|
static BOOL CheckResult(LONG error)
|
||||||
{
|
{
|
||||||
if (error != ERROR_SUCCESS) {
|
if (error != ERROR_SUCCESS) {
|
||||||
PTSTR msg;
|
PTSTR msg;
|
||||||
|
@ -43,46 +45,64 @@ BOOL CheckResult(LONG error)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BOOL CreateRegistryPath(LPTSTR szRegPath, int nMaxLen)
|
||||||
|
{
|
||||||
|
LPTSTR pRegPath = szRegPath;
|
||||||
|
|
||||||
|
// Initialise registry path string from application PATH and KEY resources
|
||||||
|
int nLength = LoadString(hInst, IDS_APP_REG_PATH, szRegPath, nMaxLen);
|
||||||
|
nLength += LoadString(hInst, IDS_APP_REG_KEY, szRegPath + nLength, nMaxLen - nLength);
|
||||||
|
ASSERT(nLength < (nMaxLen - 1));
|
||||||
|
szRegPath[nLength] = _T('\\');
|
||||||
|
|
||||||
|
// walk the registry path string creating the tree if required
|
||||||
|
while (pRegPath = _tcschr(pRegPath, _T('\\'))) {
|
||||||
|
LONG result;
|
||||||
|
HKEY hKey = NULL;
|
||||||
|
*pRegPath = _T('\0');
|
||||||
|
// Open (or create) the key
|
||||||
|
result = RegCreateKeyEx(HKEY_CURRENT_USER, szRegPath, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL);
|
||||||
|
if (!CheckResult(result)) return FALSE;
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
*pRegPath = _T('\\');
|
||||||
|
pRegPath = pRegPath + 1;
|
||||||
|
}
|
||||||
|
szRegPath[nLength] = _T('\0');
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
void LoadSettings(void)
|
void LoadSettings(void)
|
||||||
{
|
{
|
||||||
|
TCHAR szRegPath[MAX_LOADSTRING];
|
||||||
|
|
||||||
HKEY hKey;
|
HKEY hKey;
|
||||||
DWORD dwSize;
|
DWORD dwSize;
|
||||||
LONG result;
|
LONG result;
|
||||||
char szSubKey[] = "Software\\ReactWare\\Calculator";
|
|
||||||
|
if (!CreateRegistryPath(szRegPath, MAX_LOADSTRING)) return;
|
||||||
|
|
||||||
// Open the key
|
// Open the key
|
||||||
result = RegOpenKeyEx(HKEY_CURRENT_USER, szSubKey, 0, KEY_READ, &hKey);
|
result = RegOpenKeyEx(HKEY_CURRENT_USER, szRegPath, 0, KEY_READ, &hKey);
|
||||||
if (!CheckResult(result)) return;
|
if (!CheckResult(result)) return;
|
||||||
|
|
||||||
// Read the settings
|
// Read the settings
|
||||||
dwSize = sizeof(CALC_TYPES);
|
dwSize = sizeof(CALC_TYPES);
|
||||||
result = RegQueryValueEx(hKey, _T("Preferences"), NULL, NULL, (LPBYTE)&CalcType, &dwSize);
|
result = RegQueryValueEx(hKey, _T("Preferences"), NULL, NULL, (LPBYTE)&CalcType, &dwSize);
|
||||||
if (!CheckResult(result)) goto abort;
|
|
||||||
|
|
||||||
abort:
|
|
||||||
// Close the key
|
// Close the key
|
||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SaveSettings(void)
|
void SaveSettings(void)
|
||||||
{
|
{
|
||||||
HKEY hKey;
|
TCHAR szRegPath[MAX_LOADSTRING];
|
||||||
|
HKEY hKey = NULL;
|
||||||
LONG result;
|
LONG result;
|
||||||
char szSubKey1[] = "Software";
|
|
||||||
char szSubKey2[] = "Software\\ReactWare";
|
|
||||||
char szSubKey3[] = "Software\\ReactWare\\Calculator";
|
|
||||||
|
|
||||||
// Open (or create) the key
|
if (!CreateRegistryPath(szRegPath, MAX_LOADSTRING)) return;
|
||||||
hKey = NULL;
|
|
||||||
result = RegCreateKeyEx(HKEY_CURRENT_USER, szSubKey1, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL);
|
// Open the key
|
||||||
if (!CheckResult(result)) return;
|
result = RegOpenKeyEx(HKEY_CURRENT_USER, szRegPath, 0, KEY_WRITE, &hKey);
|
||||||
RegCloseKey(hKey);
|
|
||||||
hKey = NULL;
|
|
||||||
result = RegCreateKeyEx(HKEY_CURRENT_USER, szSubKey2, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL);
|
|
||||||
if (!CheckResult(result)) return;
|
|
||||||
RegCloseKey(hKey);
|
|
||||||
hKey = NULL;
|
|
||||||
result = RegCreateKeyEx(HKEY_CURRENT_USER, szSubKey3, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL);
|
|
||||||
if (!CheckResult(result)) return;
|
if (!CheckResult(result)) return;
|
||||||
|
|
||||||
// Save the settings
|
// Save the settings
|
||||||
|
|
Loading…
Reference in a new issue