// // MODULE: CharConv.CPP // // PURPOSE: conversion between char & TCHAR // // PROJECT: Generic Troubleshooter DLL for Microsoft AnswerPoint // // COMPANY: Saltmine Creative, Inc. (206)-284-7511 support@saltmine.com // // AUTHOR: Joe Mabel // // ORIGINAL DATE: // // NOTES: // 1. ConvertWCharToString pulled out of VersionInfo. // // Version Date By Comments //-------------------------------------------------------------------- // V3.0 JM // #include "stdafx.h" #include "CharConv.h" // Convert Unicode ("wide character") to CString, regardless of whether this // program is built Unicode. How this program is built determines the // underlying character type of CString. // As a convenience, returns a refernce to strRetVal /*static*/ CString& CCharConversion::ConvertWCharToString(LPCWSTR wsz, CString &strRetVal) { #ifdef UNICODE strRetVal = wsz; #else TCHAR * pBuf; int bufsize = ::WideCharToMultiByte( CP_ACP, 0, wsz, -1, NULL, 0, NULL, NULL ); pBuf = new TCHAR[bufsize]; //[BC-03022001] - added check for NULL ptr to satisfy MS code analysis tool. if(pBuf) { ::WideCharToMultiByte( CP_ACP, 0, wsz, -1, pBuf, bufsize, NULL, NULL ); strRetVal = pBuf; delete[] pBuf; } #endif return strRetVal; } // Convert char* (ASCII/ANSI, not "wide" character) to CString, regardless of whether this // program is built Unicode. How this program is built determines the // underlying character type of CString. // As a convenience, returns a refernce to strRetVal /*static*/ CString& CCharConversion::ConvertACharToString(LPCSTR sz, CString &strRetVal) { #ifdef UNICODE TCHAR * pBuf; int bufsize = ::MultiByteToWideChar( CP_ACP, 0, sz, -1, NULL, 0 ); pBuf = new TCHAR[bufsize]; //[BC-03022001] - added check for NULL ptr to satisfy MS code analysis tool. if(pBuf) { ::MultiByteToWideChar( CP_ACP, 0, sz, -1, pBuf, bufsize ); strRetVal = pBuf; delete[] pBuf; } #else strRetVal = sz; #endif return strRetVal; }