void Cspec4Cfg::setSavepath(int type,CString path,bool trim) { savepatharray[type]=(trim?TrimFileName(path):path); CString kval,tval; kval=_T("SOFTWARE\\Wilson Analytical\\LightPilot QB"); RegistryHelper regworker; if (regworker.Init(kval)) regworker.WriteStringValue(savenamearray[type],savepatharray[type]); }
bool Cx_LogManager::WriteLog(x3LogType type, const wchar_t* msg, const wchar_t* extra, const char* file, long line) { CLockCount locker(&m_loglock); if (m_loglock > 1) { return false; } std::wstring msg2, extra2, module, idname; CheckMsgParam(msg2, extra2, module, idname, msg, extra); file = TrimFileName(file); FireFirstEvent(); for (ObserverIt it = m_observers.begin(); it != m_observers.end(); ++it) { it->first->OnWriteLog(type, msg2, extra2, module, idname, file, line); } #if defined(_DEBUG) && defined(OutputDebugString) const wchar_t* names[] = { L"> LogInfo: ", L"> LogWarning: ", L"> LogError: ", L"> FatalError: " }; if (type >= x3LogType_Info && type <= x3LogType_Fatal) { OutputDebugStringW(names[type - x3LogType_Info]); OutputDebugStringW(msg); if (!extra2.empty()) { OutputDebugStringW(L", "); OutputDebugStringW(extra); } OutputDebugStringW(L"\n"); } #endif return true; }
int Cx_LogManager::CrtDbgReport(const char* msg, const char* file, long line) { WriteLog(x3LogType_Fatal, L"@LogManager:IDS_ASSERTION_FAILED", x3::a2w(msg).c_str(), file, line); #ifndef _WIN32 return 3; #else wchar_t buf[512]; swprintf_s(buf, 512, L"Debug Assertion Failed!\n" L"\nExpression: %s" L"\nFile: %s" L"\nLine: %d" L"\n\n(Press Retry to debug the application)", x3::a2w(msg).c_str(), x3::a2w(TrimFileName(file)).c_str(), line); return MessageBoxW(NULL, buf, L"Debug Assertion Failed", MB_TASKMODAL|MB_ICONHAND|MB_ABORTRETRYIGNORE|MB_SETFOREGROUND); #endif }