亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cdoclinemgr.cpp

?? 日本的開源編輯器源碼
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
//			default:
//				//	From Here Feb. 8, 2001 genta 改行コード変換処理を追加
//				if( cEol == EOL_NONE ){
//// 1999.12.20
////				/* 改行コードをCRLFに変換 */
////				cmemBuf.Append( gm_pszEolDataArr[EOL_CRLF], LEN_EOL_CRLF );
//					/* 改行コードを変換しない */
//					cmemBuf.Append( pCDocLine->m_cEol.GetValue(), pCDocLine->m_cEol.GetLen() );
//					break;
//				}
//				else {
//					/* 改行コードを指定されたものに変換 */
//					cmemBuf.Append( cEol.GetValue(), cEol.GetLen() );
//				}
//				//	To Here Feb. 8, 2001 genta
//			}
// 2002/05/09 Frozen ここまで削除

		}
		if( 0 < cmemBuf.GetLength() )//{
			file.Write(cmemBuf.GetPtr(),sizeof(char)*cmemBuf.GetLength());//2002/05/22 Frozen gotoの次の}までをこの一行で置き換え
////-			if( HFILE_ERROR == _lwrite( hFile, cmemBuf.GetPtr(), cmemBuf.GetLength() ) ){
//			if( fwrite( cmemBuf.GetPtr(), sizeof( char ), cmemBuf. GetLength(), sFile ) /* add */
//					< (size_t)cmemBuf.GetLength() ){ /* add */
////				MYTRACE( "file write error %s\n", pszPath );
//				nRetVal = FALSE;
//				goto _CLOSEFILE_;
//			}
//		}


//		pLine = GetNextLinrStr( &nLineLen );
		pCDocLine = pCDocLine->m_pNext;

	}
	}//この括弧でCFileWriteのデストラクタが呼び出され、ファイルが閉じられます。

// 2002/05/22 Frozen ここから削除(同様の処理はCFileWriteのデストラクタで代わりに行っています)------
//
//_CLOSEFILE_:;
////-	_lclose( hFile );
//	fflush( sFile );/* add */
//	fclose( sFile );/* add */
//	//<< 2002/04/13 Azumaiya
//	// ファイル屬性を元に戻す。
//	::SetFileAttributes(pszPath, dwFileAttribute);
//	//>> 2002/04/13 Azumaiya
//
// Oct 6, 2000 ao end
/* ファイル出力に関する変更はここまで。
	この後変更後のファイル情報を開くためにファイルアクセスしているが、ここまで無理に変更する必要はないでしょう。*/

// 2002/05/22 Frozen ここまで削除---------------------------------------------------------


	/* 更新後のファイル時刻の取得
	 * CloseHandle前ではFlushFileBuffersを呼んでもタイムスタンプが更新
	 * されないことがある。しかたがないのでいったんクローズして再オープ
	 * ンして時刻を取得する。
	 */
	DWORD dwFileAttribute = ::GetFileAttributes(pszPath);
	if ( dwFileAttribute == (DWORD)-1 )
	{
		dwFileAttribute = FILE_ATTRIBUTE_NORMAL;
	}
	HANDLE hFile;
	hFile = ::CreateFile(
						pszPath,			// 開くファイル名
						GENERIC_READ,		// 読み込みモードで開く。
						0,					// 共有しない。
						NULL,				// ハンドルを継承しない。
						OPEN_EXISTING,		// 存在するファイルを開く。
						dwFileAttribute,	// ファイル屬性。
						NULL				// テンプレートファイルを使わない。
						);
	if ( hFile != INVALID_HANDLE_VALUE )
	{
		::GetFileTime( (HANDLE)hFile, NULL, NULL, pFileTime );
		::CloseHandle(hFile);
	}

	}
	catch(CError_FileOpen)
	{
		::MYMESSAGEBOX(
			hWndParent,
			MB_OK | MB_ICONSTOP,
			GSTR_APPNAME,
			"\'%s\'\nファイルを保存できません。\nパスが存在しないか、他のアプリケーションで使用されている可能性があります。",
			pszPath);
		nRetVal = FALSE;
	}
	catch(CError_FileWrite)
	{
		nRetVal = FALSE;
	}

//_RETURN_:; 2002/05/22 Frozen 削除(例外処理を使用するのでgoto用のラベルは使用しない)
	if( NULL != hwndProgress ){
		::PostMessage( hwndProgress, PBM_SETPOS, 0, 0 );
		/* 処理中のユーザー操作を可能にする */
		if( !::BlockingHook( NULL ) ){
			return FALSE;
		}
	}

	/* 行変更狀態(tài)をすべてリセット */
//	if ( nRetVal ) ResetAllModifyFlag();	// ここでむじょうけんにリセットしてはいけません。2002/04/28 YAZAKI

	return nRetVal;
}





/* データの削除 */
/*
|| 指定行內(nèi)の文字しか削除できません
|| データ変更によって影響のあった、変更前と変更後の行の範囲を返します
|| この情報をもとに、レイアウト情報などを更新してください。
||
	@date 2002/03/24 YAZAKI bUndo削除
*/
void CDocLineMgr::DeleteData_CDocLineMgr(
			int			nLine,
			int			nDelPos,
			int			nDelLen,
			int*		pnModLineOldFrom,	/* 影響のあった変更前の行(from) */
			int*		pnModLineOldTo,		/* 影響のあった変更前の行(to) */
			int*		pnDelLineOldFrom,	/* 削除された変更前論理行(from) */
			int*		pnDelLineOldNum,	/* 削除された行數(shù) */
			CMemory&	cmemDeleted			/* 削除されたデータ */
//			int			bUndo				/* Undo操作かどうか */
)
{
#ifdef _DEBUG
	CRunningTimer cRunningTimer( (const char*)"CDocLineMgr::DeleteData" );
#endif
	CDocLine*	pDocLine;
	CDocLine*	pDocLine2;
	char*		pData;
	int			nDeleteLength;
	char*		pLine;
	int			nLineLen;
	char*		pLine2;
	int			nLineLen2;
	*pnModLineOldFrom = nLine;	/* 影響のあった変更前の行(from) */
	*pnModLineOldTo = nLine;	/* 影響のあった変更前の行(to) */
	*pnDelLineOldFrom = 0;		/* 削除された変更前論理行(from) */
	*pnDelLineOldNum = 0;		/* 削除された行數(shù) */
//	cmemDeleted.SetData( "", lstrlen( "" ) );
	cmemDeleted.SetDataSz( "" );

	pDocLine = GetLineInfo( nLine );
	if( NULL == pDocLine ){
		return;
	}

	pDocLine->SetModifyFlg(true);		/* 変更フラグ */

	pLine = pDocLine->m_pLine->GetPtr( &nLineLen );

	if( nDelPos >= nLineLen ){
		return;
	}
	/* 「改行」を削除する場合は、次の行と連結(jié)する */
//	if( ( nDelPos == nLineLen -1 && ( pLine[nDelPos] == CR || pLine[nDelPos] == LF ) )
//	 || nDelPos + nDelLen >= nLineLen
	if( ( EOL_NONE != pDocLine->m_cEol && nDelPos == nLineLen - pDocLine->m_cEol.GetLen() )
	 || ( EOL_NONE != pDocLine->m_cEol && nDelPos + nDelLen >  nLineLen - pDocLine->m_cEol.GetLen() )
	 || ( EOL_NONE == pDocLine->m_cEol && nDelPos + nDelLen >= nLineLen - pDocLine->m_cEol.GetLen() )
	){
		/* 実際に削除するバイト數(shù) */
		nDeleteLength = nLineLen - nDelPos;

		/* 削除されるデータ */
		cmemDeleted.SetData( &pLine[nDelPos], nDeleteLength );

		/* 次の行の情報 */
		if( NULL == ( pDocLine2 = pDocLine->m_pNext ) ){
			pData = new char[nLineLen + 1];
			if( nDelPos > 0 ){
				memcpy( pData, pLine, nDelPos );
			}
			if( 0 < nLineLen - ( nDelPos + nDeleteLength ) ){
				memcpy(
					pData + nDelPos,
					pLine + nDelPos + nDeleteLength,
					nLineLen - ( nDelPos + nDeleteLength )
				);
			}
			pData[ nLineLen - nDeleteLength ] = '\0';
			/* 改行コードの情報を更新 */
			pDocLine->m_cEol.SetType( EOL_NONE );

			if( 0 < nLineLen - nDeleteLength ){
				pDocLine->m_pLine->SetData( pData, nLineLen - nDeleteLength );
			}else{
				// 行の削除
				// 2004.03.18 Moca 関數(shù)を使う
				DeleteNode( pDocLine );
				pDocLine = NULL;
				*pnDelLineOldFrom = nLine;	/* 削除された変更前論理行(from) */
				*pnDelLineOldNum = 1;		/* 削除された行數(shù) */
			}
			delete [] pData;
		}else{
			*pnModLineOldTo = nLine + 1;	/* 影響のあった変更前の行(to) */
			pLine2 = pDocLine2->m_pLine->GetPtr( &nLineLen2 );
			pData = new char[nLineLen + nLineLen2 + 1];
			if( nDelPos > 0 ){
				memcpy( pData, pLine, nDelPos );
			}
			if( 0 < nLineLen - ( nDelPos + nDeleteLength ) ){
				memcpy(
					pData + nDelPos,
					pLine + nDelPos + nDeleteLength,
					nLineLen - ( nDelPos + nDeleteLength )
				);
			}
			/* 次の行のデータを連結(jié) */
			memcpy( pData + (nLineLen - nDeleteLength), pLine2, nLineLen2 );
			pData[ nLineLen - nDeleteLength + nLineLen2 ] = '\0';
			pDocLine->m_pLine->SetData( pData, nLineLen - nDeleteLength + nLineLen2 );
			/* 改行コードの情報を更新 */
			pDocLine->m_cEol = pDocLine2->m_cEol;

			/* 次の行を削除 && 次次行とのリストの連結(jié)*/
			// 2004.03.18 Moca DeleteNode を使う
			DeleteNode( pDocLine2 );
			pDocLine2 = NULL;
			*pnDelLineOldFrom = nLine + 1;	/* 削除された変更前論理行(from) */
			*pnDelLineOldNum = 1;			/* 削除された行數(shù) */
			delete [] pData;
		}
	}else{
		/* 実際に削除するバイト數(shù) */
		nDeleteLength = nDelLen;

		/* 削除されるデータ */
		cmemDeleted.SetData( &pLine[nDelPos], nDeleteLength );

		pData = new char[nLineLen + 1];
		if( nDelPos > 0 ){
			memcpy( pData, pLine, nDelPos );
		}
		if( 0 < nLineLen - ( nDelPos + nDeleteLength ) ){
			memcpy(
				pData + nDelPos,
				pLine + nDelPos + nDeleteLength,
				nLineLen - ( nDelPos + nDeleteLength )
			);
		}
		pData[ nLineLen - nDeleteLength ] = '\0';
		if( 0 < nLineLen - nDeleteLength ){
			pDocLine->m_pLine->SetData( pData, nLineLen - nDeleteLength );
		}else{
		}
		delete [] pData;
	}
//	DUMP();
	return;
}





/*!	データの挿入

	@date 2002/03/24 YAZAKI bUndo削除
*/
void CDocLineMgr::InsertData_CDocLineMgr(
			int			nLine,
			int			nInsPos,
			const char*	pInsData,
			int			nInsDataLen,
			int*		pnInsLineNum,	/* 挿入によって増えた行の數(shù) */
			int*		pnNewLine,		/* 挿入された部分の次の位置の行 */
			int*		pnNewPos		/* 挿入された部分の次の位置のデータ位置 */
//			int			bUndo			/* Undo操作かどうか */
)
{
	CDocLine*	pDocLine;
	CDocLine*	pDocLineNew;
	char*		pLine;
	int			nLineLen;
	int			nBgn;
	int			nPos;
	CMemory		cmemPrevLine;
	CMemory		cmemCurLine;
	CMemory		cmemNextLine;
	int			nAllLinesOld = m_nLines;
	int			nCount;

	//	May 15, 2000 genta
	CEOL 		cEOLType;
	CEOL 		cEOLTypeNext;
	//enumEOLType nEOLType;
	//enumEOLType nEOLTypeNext;

	bool		bBookMarkNext;	// 2001.12.03 hor 挿入によるマーク行の制御

	*pnNewLine = nLine;	/* 挿入された部分の次の位置の行 */
	//	Jan. 25, 2004 genta
	//	挿入文字列長が0の場合に最後までpnNewPosが設(shè)定されないので
	//	初期値として0ではなく開始位置と同じ値を入れておく.
	*pnNewPos  = nInsPos;		/* 挿入された部分の次の位置のデータ位置 */

	/* 挿入データを行終端で區(qū)切った行數(shù)カウンタ */
	nCount = 0;
	*pnInsLineNum = 0;
	pDocLine = GetLineInfo( nLine );
	if( NULL == pDocLine ){
		/* ここでNULLが帰ってくるということは、*/
		/* 全テキストの最後の次の行を追加しようとしていることを示す */
		cmemPrevLine.SetDataSz( "" );
		cmemNextLine.SetDataSz( "" );
		cEOLTypeNext.SetType( EOL_NONE );
		bBookMarkNext=false;	// 2001.12.03 hor
	}else{
		pDocLine->SetModifyFlg(true);		/* 変更フラグ */

		pLine = pDocLine->m_pLine->GetPtr( &nLineLen );
		cmemPrevLine.SetData( pLine, nInsPos );
		cmemNextLine.SetData( &pLine[nInsPos], nLineLen - nInsPos );

		cEOLTypeNext = pDocLine->m_cEol;
		bBookMarkNext= pDocLine->IsBookMarked();	// 2001.12.03 hor
	}
	nBgn = 0;
	nPos = 0;
	for( nPos = 0; nPos < nInsDataLen; ){
		if( pInsData[nPos] == '\n' || pInsData[nPos] == '\r' ){
			/* 行終端子の種類を調(diào)べる */
			cEOLType.GetTypeFromString( &pInsData[nPos], nInsDataLen - nPos );
			/* 行終端子も含めてテキストをバッファに格納 */
			cmemCurLine.SetData( &pInsData[nBgn], nPos - nBgn + cEOLType.GetLen() );
			nBgn = nPos + cEOLType.GetLen();
			nPos = nBgn;
			if( NULL == pDocLine ){
				pDocLineNew = new CDocLine;

				pDocLineNew->m_pLine = new CMemory;
				/* 挿入データを行終端で區(qū)切った行數(shù)カウンタ */
				if( 0 == nCount ){
					if( NULL == m_pDocLineTop ){
						m_pDocLineTop = pDocLineNew;
					}
					pDocLineNew->m_pPrev = m_pDocLineBot;
					if( NULL != m_pDocLineBot ){
						m_pDocLineBot->m_pNext = pDocLineNew;
					}
					m_pDocLineBot = pDocLineNew;
					pDocLineNew->m_pNext = NULL;
					pDocLineNew->m_pLine->SetData( &cmemPrevLine );
					*(pDocLineNew->m_pLine) += cmemCurLine;

					pDocLineNew->m_cEol = cEOLType;							/* 改行コードの種類 */
					// pDocLineNew->m_nEOLLen = gm_pnEolLenArr[nEOLType];	/* 改行コードの長さ */
				}else{
					if( NULL != m_pDocLineBot ){
						m_pDocLineBot->m_pNext = pDocLineNew;
					}
					pDocLineNew->m_pPrev = m_pDocLineBot;
					m_pDocLineBot = pDocLineNew;
					pDocLineNew->m_pNext = NULL;
					pDocLineNew->m_pLine->SetData( &cmemCurLine );

					pDocLineNew->m_cEol = cEOLType;							/* 改行コードの種類 */
					// pDocLineNew->m_nEOLLen = gm_pnEolLenArr[nEOLType];	/* 改行コードの長さ */
				}
				pDocLine = NULL;
				++m_nLines;
			}else{
				/* 挿入データを行終端で區(qū)切った行數(shù)カウンタ */
				if( 0 == nCount ){
					pDocLine->m_pLine->SetData( &cmemPrevLine );
					*(pDocLine->m_pLine) += cmemCurLine;

					pDocLine->m_cEol = cEOLType;						/* 改行コードの種類 */
					// pDocLine->m_nEOLLen = gm_pnEolLenArr[nEOLType];	/* 改行コードの長さ */

					// 2001.12.13 hor
					// 行頭で改行したら元の行のマークを新しい行に移動する
					// それ以外なら元の行のマークを維持して新しい行にはマークを付けない
					if(nInsPos==0){
						pDocLine->SetBookMark(false);
					}else{
						bBookMarkNext=false;
					}

					pDocLine = pDocLine->m_pNext;
				}else{
					pDocLineNew = new CDocLine;
					pDocLineNew->m_pLine = new CMemory;
					pDocLineNew->m_pPrev = pDocLine->m_pPrev;
					pDocLineNew->m_pNext = pDocLine;
					pDocLine->m_pPrev->m_pNext = pDocLineNew;
					pDocLine->m_pPrev = pDocLineNew;
					pDocLineNew->m_pLine->SetData( &cmemCurLine );

					pDocLineNew->m_cEol = cEOLType;							/* 改行コードの種類 */
					// pDocLineNew->m_nEOLLen = gm_pnEolLenArr[nEOLType];	/* 改行コードの長さ */

					++m_nLines;
				}
			}

			/* 挿入データを行終端で區(qū)切った行數(shù)カウンタ */
			++nCount;
			++(*pnNewLine);	/* 挿入された部分の次の位置の行 */
		}else{
			++nPos;
		}
	}
//	nEOLType = EOL_NONE;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久国产午夜精品| 日本亚洲免费观看| 粉嫩av一区二区三区粉嫩| www国产精品av| 国产精品1区2区| 国产精品久久久一本精品 | 国产一区啦啦啦在线观看| 欧美电视剧免费观看| 国产精品一区二区免费不卡 | 久久久亚洲午夜电影| 成人小视频免费在线观看| 亚洲日本va在线观看| 欧美色视频一区| 国产大陆亚洲精品国产| 中文av一区特黄| 欧美无砖砖区免费| 久久91精品久久久久久秒播 | 一区二区视频在线| 91麻豆精品国产自产在线| 国产一区二区电影| 亚洲乱码国产乱码精品精可以看 | 成人欧美一区二区三区视频网页| 色就色 综合激情| 久久99久久精品| 亚洲欧洲精品一区二区三区不卡| 欧美日韩一级黄| 顶级嫩模精品视频在线看| 一区二区不卡在线播放| 精品久久久久久最新网址| a级高清视频欧美日韩| 天天免费综合色| 亚洲国产精品传媒在线观看| 欧美日韩精品一区视频| 精品在线观看免费| 亚洲精品v日韩精品| 精品裸体舞一区二区三区| 91福利国产精品| 精品中文av资源站在线观看| 1区2区3区国产精品| 精品国产99国产精品| 色天使色偷偷av一区二区| 国产原创一区二区| 亚洲成a人v欧美综合天堂下载 | 欧美区视频在线观看| 成人中文字幕电影| 久久er99精品| 天堂av在线一区| 国产精品嫩草久久久久| 精品国产乱码久久久久久夜甘婷婷 | 亚洲综合色区另类av| 国产欧美日韩精品a在线观看| 7777精品伊人久久久大香线蕉的| 成a人片亚洲日本久久| 久久精品国产亚洲高清剧情介绍 | 精品国产成人系列| 777亚洲妇女| 色狠狠av一区二区三区| 成人自拍视频在线| 国产精品自拍av| 六月丁香综合在线视频| 亚洲一区二区综合| 亚洲精品免费看| 日韩一区欧美一区| 国产精品免费久久久久| 久久综合九色欧美综合狠狠| 日韩一区和二区| 欧美日本在线看| 欧美色窝79yyyycom| 色婷婷亚洲精品| 91在线视频观看| 91原创在线视频| 欧美日韩免费在线视频| 91香蕉视频污| 99精品视频在线免费观看| 成人av免费在线播放| 波多野结衣精品在线| 成人h版在线观看| 成人激情免费视频| 成人性生交大片免费看中文| 成人一区在线观看| 99综合电影在线视频| 91网站最新地址| 日本乱人伦一区| 欧美喷潮久久久xxxxx| 欧美日韩精品欧美日韩精品一 | 国产欧美一区二区精品忘忧草| 久久综合九色综合97婷婷| 国产日本欧洲亚洲| 综合在线观看色| 亚洲综合视频在线| 免费成人av资源网| 国产乱码精品一区二区三区忘忧草| 国产在线精品一区二区不卡了 | 日本一区二区成人| 久久日韩粉嫩一区二区三区| 久久婷婷久久一区二区三区| 欧美激情综合在线| 亚洲激情成人在线| 日精品一区二区三区| 久久成人久久爱| 国产suv精品一区二区三区| 91视频观看免费| 精品视频在线视频| 精品国产一区二区三区av性色| 国产视频911| 18涩涩午夜精品.www| 日韩精品久久理论片| 成人一区二区三区视频| 在线影院国内精品| 欧美大尺度电影在线| 中文字幕不卡的av| 视频在线观看91| 国产高清成人在线| 欧美日韩高清在线播放| 国产亚洲欧美日韩俺去了| 一区二区视频在线看| 成人免费va视频| 国产午夜精品一区二区三区嫩草 | 成人白浆超碰人人人人| 91免费版在线| 欧美精品v国产精品v日韩精品| wwwwxxxxx欧美| 一级精品视频在线观看宜春院| 日本vs亚洲vs韩国一区三区| jizz一区二区| 欧美精品丝袜久久久中文字幕| 国产亚洲一二三区| 亚洲成人资源网| gogo大胆日本视频一区| 日韩欧美一区二区在线视频| 国产精品三级av| 美女www一区二区| 在线观看区一区二| 国产精品乱码一区二区三区软件| 日本不卡123| 欧美日韩日日夜夜| 日韩理论电影院| 国产电影精品久久禁18| 欧美一级一级性生活免费录像| ...中文天堂在线一区| 国产福利一区在线观看| 午夜精品福利一区二区蜜股av | 欧美激情中文字幕| 麻豆一区二区在线| eeuss鲁一区二区三区| 久久综合久久综合亚洲| 亚洲成人av电影在线| av成人动漫在线观看| 久久久精品国产免费观看同学| 奇米888四色在线精品| 日本二三区不卡| 亚洲色图欧洲色图婷婷| 高清不卡一二三区| 欧美本精品男人aⅴ天堂| 亚洲成人动漫精品| 日本高清无吗v一区| 亚洲视频免费看| 色综合天天综合在线视频| 国产欧美精品一区二区色综合| 精品制服美女久久| 精品av综合导航| 久久精品国产免费| 日韩欧美激情四射| 麻豆精品一区二区| 欧美一区二区三区成人| 日韩有码一区二区三区| 欧美精品第1页| 青娱乐精品在线视频| 亚洲欧美一区二区三区国产精品| 亚洲精品v日韩精品| 成人国产精品视频| 国产精品久久久久久久久久久免费看 | 亚洲视频一区在线| 91视频观看视频| 亚洲综合无码一区二区| 欧美性受xxxx黑人xyx性爽| 亚洲va欧美va人人爽午夜| 欧美日韩国产一区二区三区地区| 亚洲成人av电影在线| 9191成人精品久久| 国内精品在线播放| 国产亚洲成aⅴ人片在线观看| 成人的网站免费观看| 亚洲乱码精品一二三四区日韩在线| 在线一区二区三区四区五区| 亚洲第一激情av| 欧美电视剧在线看免费| 国产91丝袜在线18| 亚洲精品va在线观看| 91精品国产免费| 懂色av一区二区在线播放| 亚洲视频在线一区观看| 555www色欧美视频| 国产麻豆91精品| 一卡二卡三卡日韩欧美| 日韩一区二区免费高清| 成人午夜视频在线| 亚洲最新视频在线观看| 精品国产一区二区三区久久久蜜月| k8久久久一区二区三区|