diff options
Diffstat (limited to 'ACE/apps/FaCE/CE_Screen_Output.cpp')
-rw-r--r-- | ACE/apps/FaCE/CE_Screen_Output.cpp | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/ACE/apps/FaCE/CE_Screen_Output.cpp b/ACE/apps/FaCE/CE_Screen_Output.cpp new file mode 100644 index 00000000000..59364523a8c --- /dev/null +++ b/ACE/apps/FaCE/CE_Screen_Output.cpp @@ -0,0 +1,162 @@ +// $Id$ + +#include "CE_Screen_Output.h" +#include <string.h> + + +HWND CE_Screen_Output::handler_ = 0; + + +CE_Screen_Output::CE_Screen_Output() +: pFile_(0) +{ +} + + +CE_Screen_Output::~CE_Screen_Output() +{ + if (pFile_ != 0) { + fclose(pFile_); + } +} + + +void CE_Screen_Output::SetOutputWindow(HWND hEdit) +{ + handler_ = hEdit; +} + + +void CE_Screen_Output::clear() +{ + SetWindowText(handler_, NULL); +} + + +CE_Screen_Output& CE_Screen_Output::operator << (wchar_t* output) +{ + int length = GetWindowTextLength(handler_); + SendMessage(handler_, EM_SETSEL, length, length); + SendMessage(handler_, EM_REPLACESEL, 0, (LPARAM)output); + + if (pFile_ != NULL) + { + fwprintf(pFile_, L"%s", output); + } + + return *this; +} + + +CE_Screen_Output& CE_Screen_Output::operator << (const wchar_t* output) +{ + wchar_t* buffer = _wcsdup(output); + if (buffer != 0) + { + *this << buffer; + delete buffer; + } + return *this; +} + + +CE_Screen_Output& CE_Screen_Output::operator << (char* output) +{ + int len = MultiByteToWideChar(CP_OEMCP, MB_PRECOMPOSED, output, -1, NULL, 0); + wchar_t* w_output = new wchar_t[len]; + + MultiByteToWideChar(CP_OEMCP, MB_PRECOMPOSED, output, -1, w_output, len); + *this << w_output; + + delete w_output; + + return *this; +} + + +CE_Screen_Output& CE_Screen_Output::operator << (const char* output) +{ + int len = MultiByteToWideChar(CP_OEMCP, MB_PRECOMPOSED, output, -1, NULL, 0); + wchar_t* w_output = new wchar_t[len]; + + MultiByteToWideChar(CP_OEMCP, MB_PRECOMPOSED, output, -1, w_output, len); + *this << w_output; + + delete w_output; + return *this; +} + + +CE_Screen_Output& CE_Screen_Output::operator << (char output) +{ + *this << (int)output; + return *this; +} + + +CE_Screen_Output& CE_Screen_Output::operator << (unsigned char output) +{ + *this << (int)output; + return *this; +} + + +CE_Screen_Output& CE_Screen_Output::operator << (unsigned short output) +{ + wchar_t buffer[20]; + wsprintf(buffer, L"%u", output); + *this << buffer; + return *this; +} + + +CE_Screen_Output& CE_Screen_Output::operator << (int output) +{ + wchar_t buffer[20]; + wsprintf(buffer, L"%d", output); + *this << buffer; + return *this; +} + + +CE_Screen_Output& CE_Screen_Output::operator << (unsigned int output) +{ + wchar_t buffer[20]; + wsprintf(buffer, L"%du", output); + *this << buffer; + return *this; +} + + +CE_Screen_Output& CE_Screen_Output::operator << (float output) +{ + wchar_t buffer[20]; + swprintf(buffer, L"%f", output); + *this << buffer; + return *this; +} + + +CE_Screen_Output& CE_Screen_Output::operator << (long output) +{ + wchar_t buffer[20]; + wsprintf(buffer, L"%l", output); + *this << buffer; + return *this; +} + + +CE_Screen_Output& CE_Screen_Output::operator << (unsigned long output) +{ + wchar_t buffer[20]; + wsprintf(buffer, L"%lu", output); + *this << buffer; + return *this; +} + + +CE_Screen_Output& CE_Screen_Output::operator << (FILE* pFile) +{ + pFile_ = pFile; + return *this; +} |