| | |
| | | |
| | | CContext::CContext() |
| | | { |
| | | m_nRef = 0; |
| | | m_nRetCode = CRC_UNKNOWN; |
| | | 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; |
| | | } |