#include "stdafx.h" #include "Context.h" CContext::CContext() { m_nRef = 0; m_nRetCode = 0; m_hEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL); InitializeCriticalSection(&m_criticalSection); } CContext::~CContext() { if (m_hEvent != NULL) { CloseHandle(m_hEvent); m_hEvent = NULL; } DeleteCriticalSection(&m_criticalSection); } int CContext::addRef() { Lock(); m_nRef++; Unlock(); return m_nRef; } int CContext::release() { Lock(); m_nRef--; BOOL bDelete = m_nRef == 0; Unlock(); int nRef = m_nRef;; if (bDelete) delete this; return nRef; } void CContext::setRetCode(int code) { m_nRetCode = code; } int CContext::getRetCode() { return m_nRetCode; } void CContext::setRetMsg(const char* pszMsg) { m_strRetMsg = pszMsg; } std::string& CContext::getRetMsg() { return m_strRetMsg; } HANDLE CContext::getEventHandle() { return m_hEvent; } void CContext::setEvent() { if (m_hEvent != NULL) { SetEvent(m_hEvent); } } void CContext::resetEvent() { if (m_hEvent != NULL) { ResetEvent(m_hEvent); } } void CContext::ReadString(CArchive& ar, std::string& string) { CString strTemp; ar >> strTemp; string = (LPTSTR)(LPCTSTR)strTemp; } void CContext::WriteString(CArchive& ar, std::string& string) { CString strTemp = string.c_str(); ar << strTemp; } void CContext::createDir(CString strDir) { int lastIndex = 0; int index = strDir.Find(_T("\\"), lastIndex); while (index > 0) { CString strTempDir = strDir.Left(index); CreateDirectory(strTempDir, NULL); lastIndex = index + 1; index = strDir.Find(_T("\\"), lastIndex); } CreateDirectory(strDir, NULL); } BOOL CContext::IsBoxId(CString& strId) { //'W20'¿ªÍ·£¬µ¹ÊýµÚÎåλΪ'Z'µÄ×Ö·û´® if (strId.GetLength() < 8) { return FALSE; } if (strId.Left(3).Compare(_T("W20")) != 0) { return FALSE; } if (strId.Right(5).GetAt(0) != (char)'Z') { return FALSE; } return TRUE; } BOOL CContext::IsLotId(CString& strId) { //'N20'¿ªÍ·£¬µ¹ÊýµÚÎåλΪ'Z'µÄ×Ö·û´® if (strId.GetLength() < 8) { return FALSE; } if (strId.Left(3).Compare(_T("N20")) != 0) { return FALSE; } if (strId.Right(5).GetAt(0) != (char)'Z') { return FALSE; } return TRUE; } float CContext::toFloat(const char* pszAddr) { BYTE szBuffer[4]; szBuffer[0] = pszAddr[0]; szBuffer[1] = pszAddr[1]; szBuffer[2] = pszAddr[2]; szBuffer[3] = pszAddr[3]; float f = 0.0; memcpy(&f, szBuffer, 4); return f; }