From 0b3226dc702301d9b6eef93fc3539f6258ea35f0 Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Sun, 18 Dec 2005 16:03:35 +0000 Subject: [PATCH] Fix partily of bug 1149, left todo is binary show. Follow thing : Hex, dec, oct should work fine now and convert betwin them svn path=/trunk/; revision=20245 --- reactos/subsys/system/calc/winecalc.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/reactos/subsys/system/calc/winecalc.c b/reactos/subsys/system/calc/winecalc.c index 55aa08f957c..9058ae7d3d9 100644 --- a/reactos/subsys/system/calc/winecalc.c +++ b/reactos/subsys/system/calc/winecalc.c @@ -2941,19 +2941,29 @@ void calc_buffer_display(CALC *calc) { 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 @@ void calc_buffer_display(CALC *calc) { calc->display[0] = 0; _tcscat(calc->display, s); } + old_base = NBASE_DECIMAL; } + InvalidateRect(calc->hWnd, NULL, FALSE); UpdateWindow(calc->hWnd); }