/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
-
/////////////////////////////////////////////////////////////////////////////
// English (Australia) resources
MENUITEM "S&tandard", ID_VIEW_STANDARD
MENUITEM "&Scientific", ID_VIEW_SCIENTIFIC, CHECKED
MENUITEM SEPARATOR
+ MENUITEM "&Hex\tF5", ID_VIEW_HEX
+ MENUITEM "&Decimal\tF6", ID_VIEW_DECIMAL
+ MENUITEM "&Octal\tF7", ID_VIEW_OCTAL
+ MENUITEM "&Binary\tF8", ID_VIEW_BINARY
+ MENUITEM SEPARATOR
+ MENUITEM "D&egrees\tF2", ID_VIEW_DEGREES
+ MENUITEM "&Radians\tF3", ID_VIEW_RADIANS
+ MENUITEM "&Grads\tF4", ID_VIEW_GRADS
+ MENUITEM SEPARATOR
MENUITEM "D&igit grouping", ID_VIEW_DIGIT_GROUPING
END
POPUP "&Help"
BEGIN
MENUITEM "&Help Topics", ID_HELP_TOPICS
MENUITEM SEPARATOR
- MENUITEM "&About Calculator", ID_HELP_ABOUT
+ MENUITEM "&About Scientific Calculator", ID_HELP_ABOUT
END
END
"\0"
END
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
#endif // APSTUDIO_INVOKED
IDD_SCIENTIFIC DIALOG DISCARDABLE 0, 0, 325, 156
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "ReactOS Calculator"
+CAPTION "ReactOS Scientific Calculator"
MENU IDR_CALC_SCIENTIFIC
FONT 8, "MS Sans Serif"
BEGIN
END
#endif // APSTUDIO_INVOKED
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Accelerator
+//
+
+IDR_ACCELERATOR ACCELERATORS DISCARDABLE
+BEGIN
+ VK_F2, ID_VIEW_DEGREES, VIRTKEY, NOINVERT
+ VK_F3, ID_VIEW_RADIANS, VIRTKEY, NOINVERT
+ VK_F4, ID_VIEW_GRADS, VIRTKEY, NOINVERT
+ VK_F5, ID_VIEW_HEX, VIRTKEY, NOINVERT
+ VK_F6, ID_VIEW_DECIMAL, VIRTKEY, NOINVERT
+ VK_F7, ID_VIEW_OCTAL, VIRTKEY, NOINVERT
+ VK_F8, ID_VIEW_BINARY, VIRTKEY, NOINVERT
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_APP_TITLE "ReactOS Calculator"
+END
+
#endif // English (Australia) resources
/////////////////////////////////////////////////////////////////////////////
// Global Variables:
HINSTANCE hInst;
HWND hDlgWnd;
+TCHAR szTitle[MAX_LOADSTRING];
CALC_TYPES CalcType;
+HACCEL hAccel;
BOOL bDigitGrouping = FALSE;
}
}
+void OnViewHex(void)
+{
+}
+
+void OnViewDecimal(void)
+{
+}
+
+void OnViewOctal(void)
+{
+}
+
+void OnViewBinary(void)
+{
+}
+
+void OnViewDegrees(void)
+{
+}
+
+void OnViewRadians(void)
+{
+}
+
+void OnViewGrads(void)
+{
+}
+
void OnHelpTopics(void)
{
WinHelp(hDlgWnd, _T("calc"), HELP_CONTENTS, 0);
CMD_MAP_ENTRY(ID_VIEW_STANDARD, OnViewStandard)
CMD_MAP_ENTRY(ID_VIEW_SCIENTIFIC, OnViewScientific)
CMD_MAP_ENTRY(ID_VIEW_DIGIT_GROUPING, OnViewDigitGrouping)
+ CMD_MAP_ENTRY(ID_VIEW_HEX, OnViewHex)
+ CMD_MAP_ENTRY(ID_VIEW_DECIMAL, OnViewDecimal)
+ CMD_MAP_ENTRY(ID_VIEW_OCTAL, OnViewOctal)
+ CMD_MAP_ENTRY(ID_VIEW_BINARY, OnViewBinary)
+ CMD_MAP_ENTRY(ID_VIEW_DEGREES, OnViewDegrees)
+ CMD_MAP_ENTRY(ID_VIEW_RADIANS, OnViewRadians)
+ CMD_MAP_ENTRY(ID_VIEW_GRADS, OnViewGrads)
CMD_MAP_ENTRY(ID_HELP_TOPICS, OnHelpTopics)
CMD_MAP_ENTRY(ID_HELP_ABOUT, OnHelpAbout)
END_CMD_MAP(0)
break;
-
+/*
+ case WM_KEYUP:
+ case WM_KEYDOWN:
+ {
+ MSG msg;
+ msg.hwnd = hDlg;
+ msg.message = message;
+ msg.wParam = wParam;
+ msg.lParam = lParam;
+// msg.time;
+// msg.pt;
+ if (TranslateAccelerator(hDlg, hAccel, &msg)) return 0;
+ }
+ break;
+ */
case WM_NOTIFY:
{
int idctrl;
// Initialize global variables
hInst = hInstance;
+ LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
// Load our settings from the registry
LoadSettings();
+ hAccel = LoadAccelerators(hInstance, (LPCTSTR)IDR_ACCELERATOR);
+
do {
CurrentCalcType = CalcType;
switch (CalcType) {
#include "resource.h"
+#define MAX_LOADSTRING 100
+
typedef enum _CALC_TYPES { STANDARD, SCIENTIFIC, HP42S, OTHER } CALC_TYPES;
extern HINSTANCE hInst;
extern HWND hDlgWnd;
+extern TCHAR szTitle[];
extern CALC_TYPES CalcType;
#define IDD_SCIENTIFIC 102
#define IDR_CALC_STANDARD 103
#define IDR_CALC_SCIENTIFIC 104
+#define IDS_APP_TITLE 105
+#define IDR_ACCELERATOR 106
#define IDC_BUTTON1 1000
#define IDC_BUTTON2 1001
#define IDC_EDIT1 1002
-//#define ID_EDIT_COPY 40001
-//#define ID_EDIT_PASTE 40002
-#define ID_EDIT_COPY 0xE122
-#define ID_EDIT_PASTE 0xE125
#define ID_VIEW_STANDARD 40003
#define ID_VIEW_SCIENTIFIC 40004
#define ID_VIEW_DIGIT_GROUPING 40005
-#define ID_HELP_TOPICS 40006
-#define ID_HELP_ABOUT 40007
+#define ID_VIEW_HEX 40006
+#define ID_VIEW_DECIMAL 40007
+#define ID_VIEW_OCTAL 40008
+#define ID_VIEW_BINARY 40009
+#define ID_VIEW_DEGREES 40010
+#define ID_VIEW_RADIANS 40011
+#define ID_VIEW_GRADS 40012
+#define ID_HELP_TOPICS 40013
+#define ID_HELP_ABOUT 40014
+#define ID_EDIT_COPY 0xE122
+#define ID_EDIT_PASTE 0xE125
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 103
-#define _APS_NEXT_COMMAND_VALUE 40008
+#define _APS_NEXT_RESOURCE_VALUE 107
+#define _APS_NEXT_COMMAND_VALUE 40015
#define _APS_NEXT_CONTROL_VALUE 1003
#define _APS_NEXT_SYMED_VALUE 101
#endif
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <windows.h>
+#include <tchar.h>
#include "main.h"
#include "settings.h"
+BOOL CheckResult(LONG error)
+{
+ if (error != ERROR_SUCCESS) {
+ PTSTR msg;
+ if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,
+ 0, error, MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT), (PTSTR)&msg, 0, NULL))
+ MessageBox(NULL, msg, szTitle, MB_ICONERROR | MB_OK);
+ else
+ MessageBox(NULL, _T("Error"), szTitle, MB_ICONERROR | MB_OK);
+ LocalFree(msg);
+ return FALSE;
+ }
+ return TRUE;
+}
+
void LoadSettings(void)
{
+ HKEY hKey;
+ DWORD dwSize;
+ LONG result;
+ char szSubKey[] = "Software\\ReactWare\\Calculator";
+
+ // Open the key
+ result = RegOpenKeyEx(HKEY_CURRENT_USER, szSubKey, 0, KEY_READ, &hKey);
+ if (!CheckResult(result)) return;
+
+ // Read the settings
+ dwSize = sizeof(CALC_TYPES);
+ result = RegQueryValueEx(hKey, _T("Preferences"), NULL, NULL, (LPBYTE)&CalcType, &dwSize);
+ if (!CheckResult(result)) goto abort;
+
+abort:
+ // Close the key
+ RegCloseKey(hKey);
}
void SaveSettings(void)
{
-}
+ HKEY hKey;
+ LONG result;
+ char szSubKey1[] = "Software";
+ char szSubKey2[] = "Software\\ReactWare";
+ char szSubKey3[] = "Software\\ReactWare\\Calculator";
+
+ // Open (or create) the key
+ hKey = NULL;
+ result = RegCreateKeyEx(HKEY_CURRENT_USER, szSubKey1, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL);
+ if (!CheckResult(result)) return;
+ 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;
+ // Save the settings
+ result = RegSetValueEx(hKey, _T("Preferences"), 0, REG_DWORD, (LPBYTE)&CalcType, sizeof(CALC_TYPES));
+ if (!CheckResult(result)) goto abort;
+
+abort:
+ // Close the key
+ RegCloseKey(hKey);
+}
#endif // _MSC_VER > 1000
+BOOL CheckResult(LONG error);
void LoadSettings(void);
void SaveSettings(void);