Example #1
0
VARIANT CBoxEncoding::StrToBin(VARIANT& var, VARIANT &varCP)
{
	CBoxBinPtr varString(var, VT_BSTR);
	UINT nCodePage;

	if(varCP.vt == VT_ERROR)
		nCodePage = _AtlGetConversionACP();
	else
	{
		CComVariant varTemp;

		varTemp.ChangeType(VT_I4, &varCP);
		if(varTemp.vt == VT_I4)
			nCodePage = varTemp.lVal;
		else
			AfxThrowOleException(TYPE_E_TYPEMISMATCH);
	}

	int _nTempCount = ::WideCharToMultiByte(nCodePage, 0, LPWSTR(varString.m_pData), varString.m_nSize, NULL, 0, NULL, NULL);
	CBoxBinPtr varPtr(_nTempCount);

	::WideCharToMultiByte(nCodePage, 0, LPWSTR(varString.m_pData), varString.m_nSize, varPtr, _nTempCount, NULL, NULL);

	return varPtr;
}
Example #2
0
int GetBaseByteLength(LPCWSTR pszSource)
{
	if (!pszSource)
		return 0;

	// Returns required buffer length in XCHARs
	return ::WideCharToMultiByte(_AtlGetConversionACP(), 0, pszSource, -1, NULL, 0, NULL, NULL) - 1;
}
Example #3
0
CStringW ConvertStringToUnicode(const char* pSrc)
{
	CStringW strResult;
	UINT nCodePage = CP_GB18030;
	if (!IsValidCodePage(CP_GB18030))
	{
		nCodePage = _AtlGetConversionACP();
	}
	int iLength = ::MultiByteToWideChar(nCodePage, 0, pSrc, -1, NULL, 0);
	if (iLength)
	{
		iLength = ::MultiByteToWideChar(nCodePage, 0, pSrc, -1, strResult.GetBuffer(iLength), iLength);
		strResult.GetBuffer()[iLength] = 0;
		strResult.ReleaseBufferSetLength(iLength);
	}
	return strResult;
}
Example #4
0
CStringA ConvertUnicodeToString(LPCWSTR pSrc)
{
	CStringA strResult;
	UINT nCodePage = CP_GB18030;
	if (!IsValidCodePage(CP_GB18030))
	{
		nCodePage = _AtlGetConversionACP();
	}
	int iBytes = ::WideCharToMultiByte(nCodePage, 0, pSrc, -1, NULL, 0, NULL, NULL);
	if (iBytes)
	{
		iBytes = ::WideCharToMultiByte(nCodePage, 0, pSrc, -1, strResult.GetBuffer(iBytes), iBytes, NULL, NULL);
		strResult.GetBuffer()[iBytes] = 0;
		strResult.ReleaseBufferSetLength(iBytes);
	}
	return strResult;
}
Example #5
0
BSTR CBoxEncoding::BinToStr(VARIANT& var, VARIANT &varCP)
{
	CBoxBinPtr varPtr(var);
	UINT nCodePage;

	if(varCP.vt == VT_ERROR)
		nCodePage = _AtlGetConversionACP();
	else
	{
		CComVariant varTemp;

		varTemp.ChangeType(VT_I4, &varCP);
		if(varTemp.vt == VT_I4)
			nCodePage = varTemp.lVal;
		else
			AfxThrowOleException(TYPE_E_TYPEMISMATCH);
	}

	int _nTempCount = ::MultiByteToWideChar(nCodePage, 0, varPtr, varPtr.m_nSize, NULL, NULL);
	BSTR bstr = ::SysAllocStringLen(NULL, _nTempCount);
	if(bstr != NULL)
		::MultiByteToWideChar(nCodePage, 0, varPtr, varPtr.m_nSize, bstr, _nTempCount);
	return bstr;
}
Example #6
0
void __gxx_log__::log_out( int iWay,const wchar_t* tcszOutFormat,... )
{
	EnterCriticalSection(&m_cs);
	LogCreate();
	if( m_hFile == INVALID_HANDLE_VALUE )
	{
		return;
	}
	wchar_t *tOut = NULL;
	if (m_bShowLogType)
	{
		switch(iWay)
		{
		case __GXX_HIT:
			{
				tOut = L"    ";
			}
			break;
		case __GXX_WARNING:
			{
				tOut = L"警告 ";
			}
			break;
		case __GXX_ERROR:
			{
				tOut = L"错误 ";
			}
			break;
		case __GXX_BAD:
			{
				tOut = L"严重 ";
			}
			break;
		default:
			LeaveCriticalSection(&m_cs);
			return;
		}
	}
	else
	{
		tOut = L"";
	}
	int strLen = (int)wcslen(tcszOutFormat) ;
	if( strLen <= 0 )
	{
		LeaveCriticalSection(&m_cs);
		return;
	}
	wchar_t _wBuf[BUF_SIZE];
	va_list  args;
	va_start(args,tcszOutFormat);
	vswprintf(_wBuf,tcszOutFormat,args);
	va_end(args);


	SYSTEMTIME stTime;
	GetLocalTime(&stTime);
	wchar_t outbuf[BUF_SIZE];
	if (m_bDetailLog)
	{
		swprintf(outbuf,L"%s%d-%02d-%02d %02d:%02d:%02d %03d [%d] --> %s\r\n",
			tOut,
			stTime.wYear,stTime.wMonth,stTime.wDay,
			stTime.wHour,stTime.wMinute,stTime.wSecond,stTime.wMilliseconds,GetCurrentThreadId(),
			_wBuf);
	}
	else
	{
		swprintf(outbuf,L"%s%d-%02d-%02d %02d:%02d:%02d --> %s\r\n",
			tOut,
			stTime.wYear,stTime.wMonth,stTime.wDay,
			stTime.wHour,stTime.wMinute,stTime.wSecond,
			_wBuf);
	}
	
	//写入buf完毕
	LONG longH = 0;
	if( ::SetFilePointer(m_hFile,0,&longH,FILE_END)>=0)
	{
		char _buf[BUF_SIZE];
		::WideCharToMultiByte( _AtlGetConversionACP(), 0, outbuf, (int)wcslen(outbuf)+1, _buf, BUF_SIZE*2, NULL, NULL );
		DWORD written = 0;
		::WriteFile(m_hFile,_buf,(DWORD)strlen(_buf),&written,NULL);
	}
	FlushFileBuffers(m_hFile);
	LeaveCriticalSection(&m_cs);
}
Example #7
0
void __gxx_trace__::_traceW(wchar_t * wc)
    {
        ::WideCharToMultiByte( _AtlGetConversionACP(), 0, wc, (int)wcslen(wc)+1, _buf, 1024, NULL, NULL );
        _traceA(_buf);
    }
Example #8
0
void __gxx_log__::log_out( int iWay,const wchar_t* tcszOutFormat,... )
{
	EnterCriticalSection(&m_cs);
	LogCreate();
	if( m_hFile == INVALID_HANDLE_VALUE )
	{
		return;
	}
	wchar_t *tOut = NULL;
	switch(iWay)
	{
	case __GXX_HIT:
		{
			tOut = L"提示";
		}
		break;
	case __GXX_WARNING:
		{
			tOut = L"警告";
		}
		break;
	case __GXX_ERROR:
		{
			tOut = L"错误";
		}
		break;
	case __GXX_BAD:
		{
			tOut = L"严重";
		}
		break;
	default:
		LeaveCriticalSection(&m_cs);
		return;
	}
	int strLen = wcslen(tcszOutFormat) ;
	if( strLen <= 0 )
	{
		LeaveCriticalSection(&m_cs);
		return;
	}
	wchar_t _wBuf[512];
	va_list  args;
	va_start(args,tcszOutFormat);
	vswprintf(_wBuf,tcszOutFormat,args);
	va_end(args);


	SYSTEMTIME stTime;
	GetLocalTime(&stTime);
	wchar_t outbuf[1024];
	swprintf(outbuf,L"%s! [ %d-%d-%d %d:%02d:%02d  ]: %s\r\n",
		tOut,
		stTime.wYear,stTime.wMonth,stTime.wDay,
		stTime.wHour,stTime.wMinute,stTime.wSecond,
		_wBuf);
	//写入buf完毕
	LONG longH = 0;
	if( ::SetFilePointer(m_hFile,0,&longH,FILE_END)>=0)
	{
		char _buf[2048];
		::WideCharToMultiByte( _AtlGetConversionACP(), 0, outbuf, wcslen(outbuf)+1, _buf, 2048, NULL, NULL );
		// 2014-4-11 - qsc
		if(IsNeedEncrypt())
		{
			Encrypt((BYTE*)_buf,strlen(_buf));
		}
		DWORD written = 0;
		::WriteFile(m_hFile,_buf,strlen(_buf),&written,NULL);
	}
	FlushFileBuffers(m_hFile);
	LeaveCriticalSection(&m_cs);
}