| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | 
							- #include "stdafx.h"
 
- #include ".\richtextaggregator.h"
 
- #include "Misc.h"
 
- CRichTextAggregator::CRichTextAggregator(CStringA csSeparator) :
 
- 	m_csSeparator(csSeparator)
 
- {
 
- 	//Remove the first line feed
 
- //	if(m_csSeparator.GetLength() > 1 && m_csSeparator[0] == '\r' && m_csSeparator[1] == '\n')
 
- //	{
 
- //		m_csSeparator.Delete(0);
 
- //		m_csSeparator.Delete(0);
 
- //	}
 
- 	m_csSeparator.Replace("\r\n", "\\par");
 
- }
 
- CRichTextAggregator::~CRichTextAggregator(void)
 
- {
 
- }
 
- bool CRichTextAggregator::AddClip(LPVOID lpData, int nDataSize, int nPos, int nCount)
 
- {
 
- 	LPSTR pText = (LPSTR)lpData;
 
- 	if(pText == NULL)
 
- 	{
 
- 		return false;
 
- 	}
 
- 	//Ensure it's null terminated
 
- 	if(pText[nDataSize-1] != '\0')
 
- 	{
 
- 		int len = 0;
 
- 		for(len = 0; len < nDataSize && pText[len] != '\0'; len++ )
 
- 		{
 
- 		}
 
- 		// if it is not null terminated, skip this item
 
- 		if(len >= nDataSize)
 
- 			return false;
 
- 	}
 
- 	if(nPos != nCount-1)
 
- 	{
 
- 		//Remove the last } at the end of the rtf
 
- 		bool bBreak = false;
 
- 		for(int i = nDataSize-1; i >= 0; i--)
 
- 		{
 
- 			if(pText[i] == '}')
 
- 				bBreak = true;
 
- 			pText[i] = NULL;
 
- 			if(bBreak)
 
- 				break;
 
- 		}
 
- 	}
 
- 	else if(nPos >= 1)
 
- 	{
 
- 		//Remove the {\rtf1 at the start of the rtf
 
- 		for(int i = 0; i < 6; i++)
 
- 		{
 
- 			pText[0] = NULL;
 
- 			pText++;
 
- 		}
 
- 	}
 
- 	m_csNewText += pText;
 
- 	if(nPos != nCount-1)
 
- 	{
 
- 		m_csNewText += m_csSeparator;
 
- 	}
 
- 	return true;
 
- }
 
- HGLOBAL CRichTextAggregator::GetHGlobal()
 
- {
 
- 	long lLen = m_csNewText.GetLength();
 
- 	HGLOBAL hGlobal = NewGlobalP(m_csNewText.GetBuffer(lLen), lLen+sizeof(char));
 
- 	m_csNewText.ReleaseBuffer();
 
- 	return hGlobal;
 
- }
 
 
  |