summaryrefslogtreecommitdiff
path: root/ACE/apps/FaCE/CE_Screen_Output.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/apps/FaCE/CE_Screen_Output.cpp')
-rw-r--r--ACE/apps/FaCE/CE_Screen_Output.cpp162
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;
+}