#include "CE_Screen_Output.h" #include // This utility does not use ACE, and shouldn't. //FUZZ: disable check_for_lack_ACE_OS 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_, 0); } 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_ != 0) { 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, 0, 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, 0, 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; } //FUZZ: enable check_for_lack_ACE_OS