Fix partily of bug 1149, left todo is binary show. Follow thing : Hex,
dec, oct should work fine now and convert betwin them
Modified: trunk/reactos/subsys/system/calc/winecalc.c
_____
Modified: trunk/reactos/subsys/system/calc/winecalc.c
--- trunk/reactos/subsys/system/calc/winecalc.c 2005-12-18 12:32:05 UTC
(rev 20244)
+++ trunk/reactos/subsys/system/calc/winecalc.c 2005-12-18 16:03:35 UTC
(rev 20245)
@@ -2941,19 +2941,29 @@
TCHAR s[CALC_BUF_SIZE];
int point=0;
calcfloat real;
+ static int old_base = NBASE_DECIMAL;
+
switch (calc->numBase) {
- case NBASE_HEX:
- real = calc_atof(calc->buffer, calc->numBase);
- _stprintf(calc->display, TEXT("%lx"), (long)real);
+ case NBASE_HEX:
+ real = calc_atof(calc->buffer, old_base);
+ _stprintf(calc->display, _T("%lx"), (long)real);
+ _stprintf(calc->buffer, _T("%lx"), (long)real);
+ old_base = NBASE_HEX;
break;
- case NBASE_OCTAL:
- _stprintf(calc->display, TEXT("%lo"), (long)calc->buffer);
+ case NBASE_OCTAL:
+ real = calc_atof(calc->buffer, old_base);
+ _stprintf(calc->display, TEXT("%lo"), (long)real);
+ _stprintf(calc->buffer, TEXT("%lo"), (long)real);
+ old_base = NBASE_OCTAL;
break;
case NBASE_BINARY:
- _stprintf(calc->display, TEXT("%lx"), (long)calc->buffer);
+ real = calc_atof(calc->buffer, old_base);
+
+ _stprintf(calc->display, TEXT("%lx"), (long)real);
+ old_base = NBASE_BINARY;
break;
case NBASE_DECIMAL:
@@ -3031,7 +3041,9 @@
calc->display[0] = 0;
_tcscat(calc->display, s);
}
+ old_base = NBASE_DECIMAL;
}
+
InvalidateRect(calc->hWnd, NULL, FALSE);
UpdateWindow(calc->hWnd);
}