本文整理汇总了C++中CNativeW::_SetStringLength方法的典型用法代码示例。如果您正苦于以下问题:C++ CNativeW::_SetStringLength方法的具体用法?C++ CNativeW::_SetStringLength怎么用?C++ CNativeW::_SetStringLength使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CNativeW
的用法示例。
在下文中一共展示了CNativeW::_SetStringLength方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ReplaceData
//.........这里部分代码省略.........
delLine.cmemLine.SetString(&pLine[nWorkPos], nWorkLen);
delLine.nSeq = CModifyVisitor().GetLineModifiedSeq(pCDocLine);
}
/* 次の行がある */
if( pCDocLineNext ){
/* 次の行のデータを最後に追加 */
// 改行を削除するような置換
int nNewLen = nWorkPos + pCDocLineNext->GetLengthWithEOL() + nInsLen;
if( nWorkLen <= nWorkPos && nLineLen <= nNewLen + 10 ){
// 行を連結して1行にするような操作の高速化
// 削除が元データの有効長以下で行の長さが伸びるか少し減る場合reallocを試みる
static CDocLine* pDocLinePrevAccess = NULL;
static int nAccessCount = 0;
int nBufferReserve = nNewLen;
if( pDocLinePrevAccess == pCDocLine ){
if( 100 < nAccessCount ){
if( 1000 < nNewLen ){
int n = 1000;
while( n < nNewLen ){
n += n / 5; // 20%づつ伸ばす
}
nBufferReserve = n;
}
}else{
nAccessCount++;
}
}else{
pDocLinePrevAccess = pCDocLine;
nAccessCount = 0;
}
CNativeW& ref = pCDocLine->_GetDocLineData();
ref.AllocStringBuffer(nBufferReserve);
ref._SetStringLength(nWorkPos);
ref.AppendString(pInsData, nInsLen);
ref.AppendNativeData(pCDocLineNext->_GetDocLineDataWithEOL());
pCDocLine->SetEol();
}else{
CNativeW tmp;
tmp.AllocStringBuffer(nNewLen);
tmp.AppendString(pLine, nWorkPos);
tmp.AppendString(pInsData, nInsLen);
tmp.AppendNativeData(pCDocLineNext->_GetDocLineDataWithEOL());
pCDocLine->SetDocLineStringMove(&tmp);
}
if( bChangeOneLine ){
pArg->nInsSeq = CModifyVisitor().GetLineModifiedSeq(pCDocLine);
CModifyVisitor().SetLineModified(pCDocLine, nSetSeq);
if( !bInsOneLine ){
pArg->ptNewPos.x = pArg->ptNewPos.x + nInsLen;
bInsOneLine = true;
}
}else{
CModifyVisitor().SetLineModified(pCDocLine, pArg->nDelSeq);
// 削除される行のマーク類を保存
markNext = pCDocLineNext->m_sMark;
bSetMark = true;
}
/* 次の行 行オブジェクトの削除 */
m_pcDocLineMgr->DeleteLine( pCDocLineNext );
pCDocLineNext = NULL;
/* 削除した行の総数 */
++(pArg->nDeletedLineNum);
}else{