//本函数主要将/r或是/n替换为/r/n,因为冒泡时单个的/r或/n不会换行,影响显示
void CMainFrame::PreHandleChineseDesc(CString &strDesc)
{
CString strResult("");
CString strTemp;
int iPosRN[2] = {-1,-1}; //数组的第一个表示找到/r的位置,第二个表示找到/n的位置
int iFrontPos = 0; //表示找到/r,/n的位置中的较前的一个
while( 0 != strDesc.GetLength() )
{
iPosRN[0] = strDesc.Find("/r");
iPosRN[1]= strDesc.Find("/n");
//如果没有相关的回车或是换行符了
if( (-1 == iPosRN[0] ) && (-1 == iPosRN[1] ) )
{
break; //没有相关的回车或是换行符了
}
//取小的且不是-1的那个
if( (iPosRN[0] < iPosRN[1]) && (-1 != iPosRN[0] ))
{
iFrontPos = 0;
}
else
{
iFrontPos = 1;
}
strTemp = strDesc.Left(iPosRN[iFrontPos]);
if( 0 != strTemp.GetLength() ) //这样的处理可以删除多个空行
{
strResult += strTemp;
strResult +=CString("/r/n");
}
//如果存在连续的/n/r/n,处理也是正常的
if( iPosRN[1-iFrontPos] == (iPosRN[iFrontPos]+1) )
{
strDesc = strDesc.Right(strDesc.GetLength() - iPosRN[1-iFrontPos]-1);
}
else
{
strDesc = strDesc.Right(strDesc.GetLength() - iPosRN[iFrontPos]-1);
}
}
strResult += strDesc;
strDesc = strResult;
}