#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;
|
}
|