diff --git a/reactos/base/applications/calc/winecalc.c b/reactos/base/applications/calc/winecalc.c index 7c83e9ae349..c0b0d3d09ce 100644 --- a/reactos/base/applications/calc/winecalc.c +++ b/reactos/base/applications/calc/winecalc.c @@ -476,18 +476,23 @@ LRESULT WINAPI MainProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) if (!(len = _tcslen(calc.display))) return 0; + if (!(s = calc.display)) + return 0; + + if (s[len - 1] == TEXT('.') || s[len - 1] == TEXT(',')) + len--; + if (!(hGlobalMemory = GlobalAlloc(GHND, (len + 1) * sizeof(TCHAR)))) return 0; if (!(pGlobalMemory = GlobalLock(hGlobalMemory))) return 0; - if (!(s = calc.display)) - return 0; - for (i = 0; i < len; i++) *pGlobalMemory++ = *s++; + pGlobalMemory[len - 1] = 0; + GlobalUnlock(hGlobalMemory); // call GetLastError() for exception handling if (!OpenClipboard(hWnd)) @@ -496,7 +501,7 @@ LRESULT WINAPI MainProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) if (!EmptyClipboard()) return 0; - if (!SetClipboardData(CF_TEXT, hGlobalMemory)) + if (!SetClipboardData(CF_TTEXT, hGlobalMemory)) return 0; if (!CloseClipboard()) @@ -514,11 +519,11 @@ LRESULT WINAPI MainProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) HGLOBAL hGlobalMemory; LPTSTR pGlobalMemory; - if (IsClipboardFormatAvailable(CF_TEXT)) { + if (IsClipboardFormatAvailable(CF_TTEXT)) { if (!OpenClipboard(hWnd)) return 0; - if (!(hGlobalMemory = GetClipboardData(CF_TEXT))) + if (!(hGlobalMemory = GetClipboardData(CF_TTEXT))) return 0; if (!(size = GlobalSize(hGlobalMemory))) diff --git a/reactos/base/applications/calc/winecalc.h b/reactos/base/applications/calc/winecalc.h index fad22e974de..5ee974618c3 100644 --- a/reactos/base/applications/calc/winecalc.h +++ b/reactos/base/applications/calc/winecalc.h @@ -20,6 +20,12 @@ ////////////////////////////////////////////////////////////////// +#ifdef UNICODE +#define CF_TTEXT CF_UNICODETEXT +#else +#define CF_TTEXT CF_TEXT +#endif + // numerics are defined here for easier porting typedef double calcfloat;