本文整理汇总了C++中CNativeW::AppendString方法的典型用法代码示例。如果您正苦于以下问题:C++ CNativeW::AppendString方法的具体用法?C++ CNativeW::AppendString怎么用?C++ CNativeW::AppendString使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CNativeW
的用法示例。
在下文中一共展示了CNativeW::AppendString方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Replace
void CNativeW::Replace( const wchar_t* pszFrom, int nFromLen, const wchar_t* pszTo, int nToLen )
{
CNativeW cmemWork;
int nBgnOld = 0;
int nBgn = 0;
while( nBgn <= GetStringLength() - nFromLen ){
if( 0 == wmemcmp( &GetStringPtr()[nBgn], pszFrom, nFromLen ) ){
if( nBgnOld == 0 && nFromLen <= nToLen ){
cmemWork.AllocStringBuffer( GetStringLength() );
}
if( 0 < nBgn - nBgnOld ){
cmemWork.AppendString( &GetStringPtr()[nBgnOld], nBgn - nBgnOld );
}
cmemWork.AppendString( pszTo, nToLen );
nBgn = nBgn + nFromLen;
nBgnOld = nBgn;
}else{
nBgn++;
}
}
if( nBgnOld != 0 ){
if( 0 < GetStringLength() - nBgnOld ){
cmemWork.AppendString( &GetStringPtr()[nBgnOld], GetStringLength() - nBgnOld );
}
SetNativeData( cmemWork );
}else{
if( this->GetStringPtr() == NULL ){
this->SetString(L"");
}
}
}
示例2: CopyCurLine
/*!
カーソル行をクリップボードにコピーする
@date 2007.10.08 ryoji 新規(Command_COPY()から処理抜き出し)
*/
void CEditView::CopyCurLine(
bool bAddCRLFWhenCopy, //!< [in] 折り返し位置に改行コードを挿入するか?
EEolType neweol, //!< [in] コピーするときのEOL。
bool bEnableLineModePaste //!< [in] ラインモード貼り付けを可能にする
)
{
if( GetSelectionInfo().IsTextSelected() ){
return;
}
const CLayout* pcLayout = m_pcEditDoc->m_cLayoutMgr.SearchLineByLayoutY( GetCaret().GetCaretLayoutPos().y );
if( NULL == pcLayout ){
return;
}
/* クリップボードに入れるべきテキストデータを、cmemBufに格納する */
CNativeW cmemBuf;
cmemBuf.SetString( pcLayout->GetPtr(), pcLayout->GetLengthWithoutEOL() );
if( pcLayout->GetLayoutEol().GetLen() != 0 ){
cmemBuf.AppendString(
( neweol == EOL_UNKNOWN ) ?
pcLayout->GetLayoutEol().GetValue2() : CEol(neweol).GetValue2()
);
}else if( bAddCRLFWhenCopy ){ // 2007.10.08 ryoji bAddCRLFWhenCopy対応処理追加
cmemBuf.AppendString(
( neweol == EOL_UNKNOWN ) ?
WCODE::CRLF : CEol(neweol).GetValue2()
);
}
/* クリップボードにデータcmemBufの内容を設定 */
BOOL bSetResult = MySetClipboardData(
cmemBuf.GetStringPtr(),
cmemBuf.GetStringLength(),
false,
bEnableLineModePaste
);
if( !bSetResult ){
ErrorBeep();
}
}
示例3: LoadKeyMacro
/*! キーボードマクロの読み込み(ファイルから)
エラーメッセージは出しません。呼び出し側でよきにはからってください。
*/
BOOL CPPAMacroMgr::LoadKeyMacro( HINSTANCE hInstance, const TCHAR* pszPath )
{
CTextInputStream in( pszPath );
if(!in) {
m_nReady = false;
return FALSE;
}
CNativeW cmemWork;
// バッファ(cmemWork)にファイル内容を読み込み、m_cPPAに渡す。
while( in ) {
wstring szLine = in.ReadLineW();
szLine += L"\n";
cmemWork.AppendString(szLine.c_str());
}
in.Close();
m_cBuffer.SetNativeData( cmemWork ); // m_cBufferにコピー
m_nReady = true;
return TRUE;
}
示例4: CreateKeyBindList
/*!
@return 機能が割り当てられているキーストロークの数
@date Oct. 31, 2001 genta 動的な機能名に対応するため引数追加
@date 2007.02.22 ryoji デフォルト機能割り当てに関する処理を追加
*/
int CKeyBind::CreateKeyBindList(
HINSTANCE hInstance, //!< [in] インスタンスハンドル
int nKeyNameArrNum, //!< [in]
KEYDATA* pKeyNameArr, //!< [out]
CNativeW& cMemList, //!<
CFuncLookup* pcFuncLookup, //!< [in] 機能番号→名前の対応を取る
BOOL bGetDefFuncCode //!< [in] ON:デフォルト機能割り当てを使う/OFF:使わない デフォルト:TRUE
)
{
int i;
int j;
int nValidKeys;
WCHAR pszStr[256];
WCHAR szFuncName[256];
WCHAR szFuncNameJapanese[256];
nValidKeys = 0;
cMemList.SetString(LTEXT(""));
const WCHAR* pszSHIFT = LTEXT("Shift+");
const WCHAR* pszCTRL = LTEXT("Ctrl+");
const WCHAR* pszALT = LTEXT("Alt+");
const WCHAR* pszTAB = LTEXT("\t");
const WCHAR* pszCR = LTEXT("\r\n"); //\r=0x0d=CRを追加
cMemList.AppendString( LSW(STR_ERR_DLGKEYBIND1) );
cMemList.AppendString( pszCR );
cMemList.AppendString( LTEXT("-----\t-----\t-----\t-----\t-----") );
cMemList.AppendString( pszCR );
for( j = 0; j < 8; ++j ){
for( i = 0; i < nKeyNameArrNum; ++i ){
int iFunc = GetFuncCodeAt( pKeyNameArr[i], j, bGetDefFuncCode );
if( 0 != iFunc ){
nValidKeys++;
if( j & _SHIFT ){
cMemList.AppendString( pszSHIFT );
}
if( j & _CTRL ){
cMemList.AppendString( pszCTRL );
}
if( j & _ALT ){
cMemList.AppendString( pszALT );
}
cMemList.AppendString( to_wchar(pKeyNameArr[i].m_szKeyName) );
// Oct. 31, 2001 genta
if( !pcFuncLookup->Funccode2Name(
iFunc,
szFuncNameJapanese, 255 )){
auto_strcpy( szFuncNameJapanese, LSW(STR_ERR_DLGKEYBIND2) );
}
szFuncName[0] = LTEXT('\0'); /*"---unknown()--"*/
// /* 機能名日本語 */
// ::LoadString(
// hInstance,
// pKeyNameArr[i].m_nFuncCodeArr[j],
// szFuncNameJapanese, 255
// );
cMemList.AppendString( pszTAB );
cMemList.AppendString( szFuncNameJapanese );
/* 機能ID→関数名,機能名日本語 */
//@@@ 2002.2.2 YAZAKI マクロをCSMacroMgrに統一
CSMacroMgr::GetFuncInfoByID(
hInstance,
iFunc,
szFuncName,
szFuncNameJapanese
);
/* 関数名 */
cMemList.AppendString( pszTAB );
cMemList.AppendString( szFuncName );
/* 機能番号 */
cMemList.AppendString( pszTAB );
auto_sprintf( pszStr, LTEXT("%d"), iFunc );
cMemList.AppendString( pszStr );
/* キーマクロに記録可能な機能かどうかを調べる */
cMemList.AppendString( pszTAB );
//@@@ 2002.2.2 YAZAKI マクロをCSMacroMgrに統一
if( CSMacroMgr::CanFuncIsKeyMacro( iFunc ) ){
cMemList.AppendString( LTEXT("○") );
}else{
cMemList.AppendString( LTEXT("×") );
}
cMemList.AppendString( pszCR );
}
//.........这里部分代码省略.........
示例5: LoadKeyMacro
//.........这里部分代码省略.........
break;
}
}
// Jun. 16, 2002 genta
if( !m_nReady ){
break;
}
CNativeW cmemWork;
cmemWork.SetString( strLine.c_str() + nBgn, nEnd - nBgn );
// 2014.01.28 「"\\'"」のような場合の不具合を修正
cmemWork.Replace( L"\\\\", L"\\\1" ); // 一時置換(最初に必要)
cmemWork.Replace( LTEXT("\\\'"), LTEXT("\'") );
// Jun. 16, 2002 genta double quotationもエスケープ解除
cmemWork.Replace( LTEXT("\\\""), LTEXT("\"") );
cmemWork.Replace( L"\\r", L"\r" );
cmemWork.Replace( L"\\n", L"\n" );
cmemWork.Replace( L"\\t", L"\t" );
{
// \uXXXX 置換
size_t nLen = cmemWork.GetStringLength();
size_t nBegin = 0;
const wchar_t* p = cmemWork.GetStringPtr();
CNativeW cmemTemp;
for( size_t n = 0; n < nLen; n++ ){
if( n + 1 < nLen && p[n] == L'\\' && p[n+1] == L'u' ){
size_t k;
for( k = n + 2; k < nLen && k < n + 2 + 4
&& (WCODE::Is09(p[k])
|| (L'a' <= p[k] && p[k] <= L'f')
|| (L'A' <= p[k] && p[k] <= L'F')); k++ ){
}
cmemTemp.AppendString( p + nBegin, n - nBegin );
nBegin = k;
if( 0 < k - n - 2 ){
wchar_t hex[5];
wcsncpy( hex, &p[n+2], k - n - 2 );
hex[k - n - 2] = L'\0';
wchar_t* pEnd = NULL;
wchar_t c = static_cast<wchar_t>(wcstol(hex, &pEnd, 16));
cmemTemp.AppendString( &c, 1 );
}
n = k - 1;
}
}
if( nBegin != 0 ){
if( 0 < nLen - nBegin ){
cmemTemp.AppendString( p + nBegin, nLen - nBegin );
}
cmemWork.swap( cmemTemp );
}
}
cmemWork.Replace( L"\\\1", L"\\" ); // 一時置換を\に戻す(最後でないといけない)
macro->AddStringParam( cmemWork.GetStringPtr(), cmemWork.GetStringLength() ); // 引数を文字列として追加
}
else if ( Is09(szLine[i]) || szLine[i] == L'-' ){ // 数字で始まったら数字列だ(-記号も含む)。
// Jun. 16, 2002 genta プロトタイプチェック
// Jun. 27, 2002 genta 余分な引数を無視するよう,VT_EMPTYを許容する.
if( type != VT_I4 &&
type != VT_EMPTY){
::MYMESSAGEBOX(
NULL,
MB_OK | MB_ICONSTOP | MB_TOPMOST,
MACRO_ERROR_TITLE,
LS(STR_ERR_DLGKEYMACMGR6),
示例6: ReplaceData
//.........这里部分代码省略.........
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{
/* 行内データ削除 */