当复制VS2010中带有中文字符的代码到Office(Word, Excel, PowerPoint, Outlook)时,
在中文字符后面会被添加一到三个乱码。比如复制" 中文字符",粘贴到word就会变成( 中D文?字Á?符¤?)。
在中文字符后面会被添加一到三个乱码。比如复制" 中文字符",粘贴到word就会变成( 中D文?字Á?符¤?)。
通过黑暗执行绪的一篇文章提示,截取剪贴板中RTF(富文本格式)的数据流,并作出修复。该作者使用了 .NET中的正则表达式类RegEx来达到修复目的。方法调用很简单,感兴趣的可以搜索一下作者的博客空间。
我这里给出另一个解决方法:同时截取CF_UNICODETEXT和RTF两种剪贴板数据,以CF_UNICODETEXT中的正确数据为参照,对比剔除RTF中的乱码。
写这份代码走了不少弯路,主要是一开始对RTF格式不熟悉,其中的中文接ASCII码处理着实让我差点抓破了头皮。
先给出乱码修复截图:
程序添加了全局热键 CTRL+Q 和 监测状态。右下角则是一个动态文字Logo,鼠标移上去就会出现Logo,
移开则改为快捷键说明。编译好的文件这里下载VS2010CopyModify.rar。
下面贴出程序的核心算法:
函数参数说明:
PTSTR pText (RTF数据首地址指针,切勿传递剪贴板内存,必须是程序拷贝剪贴板的。)
UINT iText (RTF数据大小。单位字节)
LPWSTR pTextU (CF_UNICODETEXT数据首地址指针,同上,不可为剪贴板内存。)
UINT iTextU (CF_UNICODETEXT数据大小。单位字符)
返回值类型 UINT (修复完后RTF数据的大小。单位字节)
/*-------------------------------
Repair.cpp - 实作乱码修正处理
-------------------------------*/
#include <windows.h>
#include <string.h>
UINT ClobalRepair ( PTSTR pText , UINT iText , LPWSTR pTextU , UINT iTextU)
{
const PTSTR tZ = " // uinput2 // u" ,
tA = " // cf0 // par" ,
tP = " // par";
TCHAR AnsiT [ 11 ];
PTSTR pTextS = pText ,
pTextW = NULL ,
pAnsiT = AnsiT;
PTCHAR pTextK = NULL;
UINT i , iU , iC = 0 , iR = 0 ,
UTRange = 10;
BOOL bAnsi = FALSE;
LPWSTR pTextUW = pTextU;
long int iM;
while( TRUE)
{
// 查找/uinput2/u
pTextS = strstr( pTextS , tZ);
if( pTextS == NULL)
break;
// 指向Unicode编码的首字节
pTextS = & pTextS [ UTRange ];
// 获取Unicode编码的十六进制值
iM = strtol( pTextS , & pTextK , 10);
// 修正负数补码的问题
iM = iM & 0xFFFF;
pTextS = pTextK;
pTextS = & pTextS [ 1 ];
pTextS [ 0 ] = ' ';
pTextS = & pTextS [ 1 ];
// 在Unicode数据中对焦中文字符
for ( iU = 0; iU < iTextU; iU ++)
{
if( pTextUW [ iU ] == iM)
{
pTextUW = & pTextUW [ iU + 1 ];
iTextU -= ( iU + 1);
break;
}
}
// 中文接中文的处理
if ( pTextUW [ 0 ] > 0x80)
{
pTextW = strstr( pTextS , tZ);
iC = pTextW - pTextS;
i = pTextS - pText;
iR = i + iC;
for ( i = 0; iR <= iText; i ++ , iR ++)
pTextS [ i ] = pTextW [ i ];
iText -= iC;
continue;
}
// 文档尾的处理
if( pTextUW [ 0 ] == NULL)
{
pTextW = strstr( pTextS , tP);
iC = pTextW - pTextS;
i = pTextS - pText;
iR = i + iC;
for ( i = 0; iR <= iText; i ++ , iR ++)
pTextS [ i ] = pTextW [ i ];
iText -= iC;
continue;
}
// 换行符、回车及水平制表
if ( pTextUW [ 0 ] == 0x0D || pTextUW [ 0 ] == 0x09)
{
pTextW = strstr( pTextS , tA);
iC = pTextW - pTextS;
i = pTextS - pText;
iR = i + iC;
for ( i = 0; iR <= iText; i ++ , iR ++)
pTextS [ i ] = pTextW [ i ];
iText -= iC;
continue;
}
// 中文接ASCII的处理
if ( pTextUW [ 0 ] <= 0x80 && pTextUW [ 0 ] >= 0x20)
{
for ( i = 0; i < 11; i ++)
AnsiT [ i ] = NULL;
pAnsiT = AnsiT;
for ( iR = 0; iR < 4 && (( pTextUW [ iR ] <= 0x80) && ( pTextUW [ iR ] >= 0x20)); iR ++)
{
if ( pTextUW [ iR ] == 0x5C || pTextUW [ iR ] == 0x7B || pTextUW [ iR ] == 0x7D)
{
pAnsiT [ 0 ] = '//';
pAnsiT = & pAnsiT [ 1 ];
pAnsiT [ 0 ] = pTextUW [ iR ];
pAnsiT = & pAnsiT [ 1 ];
}
else
{
pAnsiT [ 0 ] = pTextUW [ iR ];
pAnsiT = & pAnsiT [ 1 ];
}
}
if ( strlen( AnsiT) <= 3)
AnsiT [ iR ] = '//';
pTextW = pTextS;
pTextW = strstr( pTextS , AnsiT);
if( pTextW == NULL)
{
bAnsi = FALSE;
pTextW = pTextS;
for ( iC = 0; TRUE; iC ++)
{
if (( pTextW [ iC ] == '//' && pTextW [ iC - 1 ] != '//') &&
( pTextW [ iC + 1 ] == 'c' || pTextW [ iC + 1 ] == 'p') &&
( pTextW [ iC + 2 ] == 'f' || pTextW [ iC + 2 ] == 'a') &&
( pTextW [ iC + 3 ] == '0' || pTextW [ iC + 3 ] == 'r'))
{
pTextW = & pTextW [ iC ];
break;
}
}
while( TRUE)
{
if ( pTextW [ 0 ] == AnsiT [ 0 ])
{
if ( AnsiT [ 0 ] == '//')
{
if ( pTextW [ 1 ] == AnsiT [ 1 ])
break;
}
else
{
if ( AnsiT [ 1 ] != NULL && pTextW [ 1 ] == AnsiT [ 1 ])
break;
else
{
if( pTextW [ 1 ] == '//' &&
( pTextW [ 2 ] == 'c' || pTextW [ 2 ] == 'p') &&
( pTextW [ 3 ] == 'f' || pTextW [ 3 ] == 'a'))
{
bAnsi = TRUE;
break;
}
}
}
}
pTextW = & pTextW [ - 1 ];
}
if ( AnsiT [ 2 ] != NULL && bAnsi != TRUE)
{
while( TRUE)
{
if ( pTextW [ 0 ] == AnsiT [ 0 ] && pTextW [ 1 ] == AnsiT [ 1 ] &&
pTextW [ 2 ] == AnsiT [ 2 ])
{
if ( AnsiT [ 2 ] == '//')
{
if ( pTextW [ 3 ] == AnsiT [ 3 ])
break;
}
else
{
if ( AnsiT [ 3 ] != NULL && pTextW [ 3 ] == AnsiT [ 3 ])
break;
else
{
if ( pTextW [ 3 ] == '//' &&
( pTextW [ 4 ] == 'c' || pTextW [ 4 ] == 'p') &&
( pTextW [ 5 ] == 'f' || pTextW [ 5 ] == 'a'))
{
bAnsi = TRUE;
break;
}
}
}
}
pTextW = & pTextW [ - 1 ];
}
}
if ( AnsiT [ 3 ] != NULL && bAnsi != TRUE)
{
while( TRUE)
{
if ( pTextW [ 0 ] == AnsiT [ 0 ] && pTextW [ 1 ] == AnsiT [ 1 ] &&
pTextW [ 2 ] == AnsiT [ 2 ] && pTextW [ 3 ] == AnsiT [ 3 ])
{
if ( AnsiT [ 3 ] == '//')
{
if ( pTextW [ 4 ] == AnsiT [ 4 ])
break;
}
else
{
if ( AnsiT [ 4 ] != NULL && pTextW [ 4 ] == AnsiT [ 4 ])
break;
else
{
if ( pTextW [ 4 ] == '//' &&
( pTextW [ 5 ] == 'c' || pTextW [ 5 ] == 'p') &&
( pTextW [ 6 ] == 'f' || pTextW [ 6 ] == 'a'))
{
bAnsi = TRUE;
break;
}
}
}
}
pTextW = & pTextW [ - 1 ];
}
}
if ( AnsiT [ 4 ] != NULL && bAnsi != TRUE)
{
while( TRUE)
{
if ( pTextW [ 0 ] == AnsiT [ 0 ] && pTextW [ 1 ] == AnsiT [ 1 ] &&
pTextW [ 2 ] == AnsiT [ 2 ] && pTextW [ 3 ] == AnsiT [ 3 ] &&
pTextW [ 4 ] == AnsiT [ 4 ])
{
if ( AnsiT [ 4 ] == '//')
{
if ( pTextW [ 5 ] == AnsiT [ 5 ])
break;
}
else
{
if ( AnsiT [ 5 ] != NULL && pTextW [ 5 ] == AnsiT [ 5 ])
break;
else
{
if ( pTextW [ 5 ] == '//' &&
( pTextW [ 6 ] == 'c' || pTextW [ 6 ] == 'p') &&
( pTextW [ 7 ] == 'f' || pTextW [ 7 ] == 'a'))
{
bAnsi = TRUE;
break;
}
}
}
}
pTextW = & pTextW [ - 1 ];
}
}
if ( AnsiT [ 5 ] != NULL && bAnsi != TRUE)
{
while( TRUE)
{
if ( pTextW [ 0 ] == AnsiT [ 0 ] && pTextW [ 1 ] == AnsiT [ 1 ] &&
pTextW [ 2 ] == AnsiT [ 2 ] && pTextW [ 3 ] == AnsiT [ 3 ] &&
pTextW [ 4 ] == AnsiT [ 4 ] && pTextW [ 5 ] == AnsiT [ 5 ])
{
if ( AnsiT [ 5 ] == '//')
{
if ( pTextW [ 6 ] == AnsiT [ 6 ])
break;
}
else
{
if ( AnsiT [ 6 ] != NULL && pTextW [ 6 ] == AnsiT [ 6 ])
break;
else
{
if ( pTextW [ 6 ] == '//' &&
( pTextW [ 7 ] == 'c' || pTextW [ 7 ] == 'p') &&
( pTextW [ 8 ] == 'f' || pTextW [ 8 ] == 'a'))
{
bAnsi = TRUE;
break;
}
}
}
}
pTextW = & pTextW [ - 1 ];
}
}
if ( AnsiT [ 6 ] != NULL && bAnsi != TRUE)
{
while( TRUE)
{
if ( pTextW [ 0 ] == AnsiT [ 0 ] && pTextW [ 1 ] == AnsiT [ 1 ] &&
pTextW [ 2 ] == AnsiT [ 2 ] && pTextW [ 3 ] == AnsiT [ 3 ] &&
pTextW [ 4 ] == AnsiT [ 4 ] && pTextW [ 5 ] == AnsiT [ 5 ] &&
pTextW [ 6 ] == AnsiT [ 6 ] )
{
if ( AnsiT [ 6 ] == '//')
{
if ( pTextW [ 7 ] == AnsiT [ 7 ])
break;
}
else
{
if ( AnsiT [ 7 ] != NULL && pTextW [ 7 ] == AnsiT [ 7 ])
break;
else
{
if ( pTextW [ 7 ] == '//' &&
( pTextW [ 8 ] == 'c' || pTextW [ 8 ] == 'p') &&
( pTextW [ 9 ] == 'f' || pTextW [ 9 ] == 'a'))
{
bAnsi = TRUE;
break;
}
}
}
}
pTextW = & pTextW [ - 1 ];
}
}
if ( AnsiT [ 7 ] != NULL && bAnsi != TRUE)
{
while( TRUE)
{
if ( pTextW [ 0 ] == AnsiT [ 0 ] && pTextW [ 1 ] == AnsiT [ 1 ] &&
pTextW [ 2 ] == AnsiT [ 2 ] && pTextW [ 3 ] == AnsiT [ 3 ] &&
pTextW [ 4 ] == AnsiT [ 4 ] && pTextW [ 5 ] == AnsiT [ 5 ] &&
pTextW [ 6 ] == AnsiT [ 6 ] && pTextW [ 7 ] == AnsiT [ 7 ])
{
if ( AnsiT [ 7 ] == '//')
{
if ( pTextW [ 8 ] == AnsiT [ 8 ])
break;
}
else
{
if ( AnsiT [ 8 ] != NULL && pTextW [ 8 ] == AnsiT [ 8 ])
break;
else
{
if ( pTextW [ 8 ] == '//' &&
( pTextW [ 9 ] == 'c' || pTextW [ 9 ] == 'p') &&
( pTextW [ 10 ] == 'f' || pTextW [ 10 ] == 'a'))
{
bAnsi = TRUE;
break;
}
}
}
}
pTextW = & pTextW [ - 1 ];
}
}
}
iC = pTextW - pTextS;
i = pTextS - pText;
iR = i + iC;
for ( i = 0; iR <= iText; i ++ , iR ++)
pTextS [ i ] = pTextW [ i ];
iText -= iC;
continue;
}
}
return iText;
}
Repair.cpp - 实作乱码修正处理
-------------------------------*/
#include <windows.h>
#include <string.h>
UINT ClobalRepair ( PTSTR pText , UINT iText , LPWSTR pTextU , UINT iTextU)
{
const PTSTR tZ = " // uinput2 // u" ,
tA = " // cf0 // par" ,
tP = " // par";
TCHAR AnsiT [ 11 ];
PTSTR pTextS = pText ,
pTextW = NULL ,
pAnsiT = AnsiT;
PTCHAR pTextK = NULL;
UINT i , iU , iC = 0 , iR = 0 ,
UTRange = 10;
BOOL bAnsi = FALSE;
LPWSTR pTextUW = pTextU;
long int iM;
while( TRUE)
{
// 查找/uinput2/u
pTextS = strstr( pTextS , tZ);
if( pTextS == NULL)
break;
// 指向Unicode编码的首字节
pTextS = & pTextS [ UTRange ];
// 获取Unicode编码的十六进制值
iM = strtol( pTextS , & pTextK , 10);
// 修正负数补码的问题
iM = iM & 0xFFFF;
pTextS = pTextK;
pTextS = & pTextS [ 1 ];
pTextS [ 0 ] = ' ';
pTextS = & pTextS [ 1 ];
// 在Unicode数据中对焦中文字符
for ( iU = 0; iU < iTextU; iU ++)
{
if( pTextUW [ iU ] == iM)
{
pTextUW = & pTextUW [ iU + 1 ];
iTextU -= ( iU + 1);
break;
}
}
// 中文接中文的处理
if ( pTextUW [ 0 ] > 0x80)
{
pTextW = strstr( pTextS , tZ);
iC = pTextW - pTextS;
i = pTextS - pText;
iR = i + iC;
for ( i = 0; iR <= iText; i ++ , iR ++)
pTextS [ i ] = pTextW [ i ];
iText -= iC;
continue;
}
// 文档尾的处理
if( pTextUW [ 0 ] == NULL)
{
pTextW = strstr( pTextS , tP);
iC = pTextW - pTextS;
i = pTextS - pText;
iR = i + iC;
for ( i = 0; iR <= iText; i ++ , iR ++)
pTextS [ i ] = pTextW [ i ];
iText -= iC;
continue;
}
// 换行符、回车及水平制表
if ( pTextUW [ 0 ] == 0x0D || pTextUW [ 0 ] == 0x09)
{
pTextW = strstr( pTextS , tA);
iC = pTextW - pTextS;
i = pTextS - pText;
iR = i + iC;
for ( i = 0; iR <= iText; i ++ , iR ++)
pTextS [ i ] = pTextW [ i ];
iText -= iC;
continue;
}
// 中文接ASCII的处理
if ( pTextUW [ 0 ] <= 0x80 && pTextUW [ 0 ] >= 0x20)
{
for ( i = 0; i < 11; i ++)
AnsiT [ i ] = NULL;
pAnsiT = AnsiT;
for ( iR = 0; iR < 4 && (( pTextUW [ iR ] <= 0x80) && ( pTextUW [ iR ] >= 0x20)); iR ++)
{
if ( pTextUW [ iR ] == 0x5C || pTextUW [ iR ] == 0x7B || pTextUW [ iR ] == 0x7D)
{
pAnsiT [ 0 ] = '//';
pAnsiT = & pAnsiT [ 1 ];
pAnsiT [ 0 ] = pTextUW [ iR ];
pAnsiT = & pAnsiT [ 1 ];
}
else
{
pAnsiT [ 0 ] = pTextUW [ iR ];
pAnsiT = & pAnsiT [ 1 ];
}
}
if ( strlen( AnsiT) <= 3)
AnsiT [ iR ] = '//';
pTextW = pTextS;
pTextW = strstr( pTextS , AnsiT);
if( pTextW == NULL)
{
bAnsi = FALSE;
pTextW = pTextS;
for ( iC = 0; TRUE; iC ++)
{
if (( pTextW [ iC ] == '//' && pTextW [ iC - 1 ] != '//') &&
( pTextW [ iC + 1 ] == 'c' || pTextW [ iC + 1 ] == 'p') &&
( pTextW [ iC + 2 ] == 'f' || pTextW [ iC + 2 ] == 'a') &&
( pTextW [ iC + 3 ] == '0' || pTextW [ iC + 3 ] == 'r'))
{
pTextW = & pTextW [ iC ];
break;
}
}
while( TRUE)
{
if ( pTextW [ 0 ] == AnsiT [ 0 ])
{
if ( AnsiT [ 0 ] == '//')
{
if ( pTextW [ 1 ] == AnsiT [ 1 ])
break;
}
else
{
if ( AnsiT [ 1 ] != NULL && pTextW [ 1 ] == AnsiT [ 1 ])
break;
else
{
if( pTextW [ 1 ] == '//' &&
( pTextW [ 2 ] == 'c' || pTextW [ 2 ] == 'p') &&
( pTextW [ 3 ] == 'f' || pTextW [ 3 ] == 'a'))
{
bAnsi = TRUE;
break;
}
}
}
}
pTextW = & pTextW [ - 1 ];
}
if ( AnsiT [ 2 ] != NULL && bAnsi != TRUE)
{
while( TRUE)
{
if ( pTextW [ 0 ] == AnsiT [ 0 ] && pTextW [ 1 ] == AnsiT [ 1 ] &&
pTextW [ 2 ] == AnsiT [ 2 ])
{
if ( AnsiT [ 2 ] == '//')
{
if ( pTextW [ 3 ] == AnsiT [ 3 ])
break;
}
else
{
if ( AnsiT [ 3 ] != NULL && pTextW [ 3 ] == AnsiT [ 3 ])
break;
else
{
if ( pTextW [ 3 ] == '//' &&
( pTextW [ 4 ] == 'c' || pTextW [ 4 ] == 'p') &&
( pTextW [ 5 ] == 'f' || pTextW [ 5 ] == 'a'))
{
bAnsi = TRUE;
break;
}
}
}
}
pTextW = & pTextW [ - 1 ];
}
}
if ( AnsiT [ 3 ] != NULL && bAnsi != TRUE)
{
while( TRUE)
{
if ( pTextW [ 0 ] == AnsiT [ 0 ] && pTextW [ 1 ] == AnsiT [ 1 ] &&
pTextW [ 2 ] == AnsiT [ 2 ] && pTextW [ 3 ] == AnsiT [ 3 ])
{
if ( AnsiT [ 3 ] == '//')
{
if ( pTextW [ 4 ] == AnsiT [ 4 ])
break;
}
else
{
if ( AnsiT [ 4 ] != NULL && pTextW [ 4 ] == AnsiT [ 4 ])
break;
else
{
if ( pTextW [ 4 ] == '//' &&
( pTextW [ 5 ] == 'c' || pTextW [ 5 ] == 'p') &&
( pTextW [ 6 ] == 'f' || pTextW [ 6 ] == 'a'))
{
bAnsi = TRUE;
break;
}
}
}
}
pTextW = & pTextW [ - 1 ];
}
}
if ( AnsiT [ 4 ] != NULL && bAnsi != TRUE)
{
while( TRUE)
{
if ( pTextW [ 0 ] == AnsiT [ 0 ] && pTextW [ 1 ] == AnsiT [ 1 ] &&
pTextW [ 2 ] == AnsiT [ 2 ] && pTextW [ 3 ] == AnsiT [ 3 ] &&
pTextW [ 4 ] == AnsiT [ 4 ])
{
if ( AnsiT [ 4 ] == '//')
{
if ( pTextW [ 5 ] == AnsiT [ 5 ])
break;
}
else
{
if ( AnsiT [ 5 ] != NULL && pTextW [ 5 ] == AnsiT [ 5 ])
break;
else
{
if ( pTextW [ 5 ] == '//' &&
( pTextW [ 6 ] == 'c' || pTextW [ 6 ] == 'p') &&
( pTextW [ 7 ] == 'f' || pTextW [ 7 ] == 'a'))
{
bAnsi = TRUE;
break;
}
}
}
}
pTextW = & pTextW [ - 1 ];
}
}
if ( AnsiT [ 5 ] != NULL && bAnsi != TRUE)
{
while( TRUE)
{
if ( pTextW [ 0 ] == AnsiT [ 0 ] && pTextW [ 1 ] == AnsiT [ 1 ] &&
pTextW [ 2 ] == AnsiT [ 2 ] && pTextW [ 3 ] == AnsiT [ 3 ] &&
pTextW [ 4 ] == AnsiT [ 4 ] && pTextW [ 5 ] == AnsiT [ 5 ])
{
if ( AnsiT [ 5 ] == '//')
{
if ( pTextW [ 6 ] == AnsiT [ 6 ])
break;
}
else
{
if ( AnsiT [ 6 ] != NULL && pTextW [ 6 ] == AnsiT [ 6 ])
break;
else
{
if ( pTextW [ 6 ] == '//' &&
( pTextW [ 7 ] == 'c' || pTextW [ 7 ] == 'p') &&
( pTextW [ 8 ] == 'f' || pTextW [ 8 ] == 'a'))
{
bAnsi = TRUE;
break;
}
}
}
}
pTextW = & pTextW [ - 1 ];
}
}
if ( AnsiT [ 6 ] != NULL && bAnsi != TRUE)
{
while( TRUE)
{
if ( pTextW [ 0 ] == AnsiT [ 0 ] && pTextW [ 1 ] == AnsiT [ 1 ] &&
pTextW [ 2 ] == AnsiT [ 2 ] && pTextW [ 3 ] == AnsiT [ 3 ] &&
pTextW [ 4 ] == AnsiT [ 4 ] && pTextW [ 5 ] == AnsiT [ 5 ] &&
pTextW [ 6 ] == AnsiT [ 6 ] )
{
if ( AnsiT [ 6 ] == '//')
{
if ( pTextW [ 7 ] == AnsiT [ 7 ])
break;
}
else
{
if ( AnsiT [ 7 ] != NULL && pTextW [ 7 ] == AnsiT [ 7 ])
break;
else
{
if ( pTextW [ 7 ] == '//' &&
( pTextW [ 8 ] == 'c' || pTextW [ 8 ] == 'p') &&
( pTextW [ 9 ] == 'f' || pTextW [ 9 ] == 'a'))
{
bAnsi = TRUE;
break;
}
}
}
}
pTextW = & pTextW [ - 1 ];
}
}
if ( AnsiT [ 7 ] != NULL && bAnsi != TRUE)
{
while( TRUE)
{
if ( pTextW [ 0 ] == AnsiT [ 0 ] && pTextW [ 1 ] == AnsiT [ 1 ] &&
pTextW [ 2 ] == AnsiT [ 2 ] && pTextW [ 3 ] == AnsiT [ 3 ] &&
pTextW [ 4 ] == AnsiT [ 4 ] && pTextW [ 5 ] == AnsiT [ 5 ] &&
pTextW [ 6 ] == AnsiT [ 6 ] && pTextW [ 7 ] == AnsiT [ 7 ])
{
if ( AnsiT [ 7 ] == '//')
{
if ( pTextW [ 8 ] == AnsiT [ 8 ])
break;
}
else
{
if ( AnsiT [ 8 ] != NULL && pTextW [ 8 ] == AnsiT [ 8 ])
break;
else
{
if ( pTextW [ 8 ] == '//' &&
( pTextW [ 9 ] == 'c' || pTextW [ 9 ] == 'p') &&
( pTextW [ 10 ] == 'f' || pTextW [ 10 ] == 'a'))
{
bAnsi = TRUE;
break;
}
}
}
}
pTextW = & pTextW [ - 1 ];
}
}
}
iC = pTextW - pTextS;
i = pTextS - pText;
iR = i + iC;
for ( i = 0; iR <= iText; i ++ , iR ++)
pTextS [ i ] = pTextW [ i ];
iText -= iC;
continue;
}
}
return iText;
}