void CLog::OutputDebugString(const std::string& line) { #if defined(_DEBUG) || defined(PROFILE) #if defined(TARGET_WINDOWS) // we can't use charsetconverter here as it's initialized later than CLog and deinitialized early int bufSize = MultiByteToWideChar(CP_UTF8, 0, line.c_str(), -1, NULL, 0); CStdStringW wstr (L"", bufSize); if ( MultiByteToWideChar(CP_UTF8, 0, line.c_str(), -1, wstr.GetBuf(bufSize), bufSize) == bufSize ) { wstr.RelBuf(); ::OutputDebugStringW(wstr.c_str()); } else #endif // TARGET_WINDOWS ::OutputDebugString(line.c_str()); ::OutputDebugString("\n"); #endif }
static BOOL CALLBACK DSEnumCallback(LPGUID lpGuid, LPCTSTR lpcstrDescription, LPCTSTR lpcstrModule, LPVOID lpContext) { DSDevice dev; std::list<DSDevice> &enumerator = *static_cast<std::list<DSDevice>*>(lpContext); int bufSize = MultiByteToWideChar(CP_ACP, 0, lpcstrDescription, -1, NULL, 0); CStdStringW strW (L"", bufSize); if ( bufSize == 0 || MultiByteToWideChar(CP_ACP, 0, lpcstrDescription, -1, strW.GetBuf(bufSize), bufSize) != bufSize ) strW.clear(); strW.RelBuf(); dev.name = localWideToUtf(strW); dev.lpGuid = lpGuid; if (lpGuid) enumerator.push_back(dev); return TRUE; }