⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csplitterwnd.cpp

📁 日本的开源编辑器源码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
				/* ペインの表示状態を他のビューにコピー */
				if( NULL != pcViewArr[2] && NULL != pcViewArr[0] ){
					pcViewArr[2]->CopyViewStatus( pcViewArr[0] );
				}
			}else
			if( !bVUp && bHUp ){
				/* ペインの表示状態を他のビューにコピー */
				if( NULL != pcViewArr[1] && NULL != pcViewArr[0] ){
					pcViewArr[1]->CopyViewStatus( pcViewArr[0] );
				}
			}else{
				/* ペインの表示状態を他のビューにコピー */
				if( NULL != pcViewArr[3] && NULL != pcViewArr[0] ){
					pcViewArr[3]->CopyViewStatus( pcViewArr[0] );
				}
			}
		}
		nActivePane = 0;
	}else
	if( nVertical > 0 &&  nHorizontal == 0 ){
		m_nAllSplitRows = 2;	/* 分割行数 */
		m_nAllSplitCols = 1;	/* 分割桁数 */

		if( m_ChildWndArr[0] != NULL ) ::ShowWindow( m_ChildWndArr[0], SW_SHOW );
		if( m_ChildWndArr[1] != NULL ) ::ShowWindow( m_ChildWndArr[1], SW_HIDE );
		if( m_ChildWndArr[2] != NULL ) ::ShowWindow( m_ChildWndArr[2], SW_SHOW );
		if( m_ChildWndArr[3] != NULL ) ::ShowWindow( m_ChildWndArr[3], SW_HIDE );
		if( NULL != pcViewArr[0] ) pcViewArr[0]->SplitBoxOnOff( FALSE, FALSE, FALSE );	/* 縦?横の分割ボックスのON/OFF */
//		if( NULL != pcViewArr[1] ) pcViewArr[1]->SplitBoxOnOff( FALSE, FALSE, FALSE );	/* 縦?横の分割ボックスのON/OFF */
		if( NULL != pcViewArr[2] ) pcViewArr[2]->SplitBoxOnOff( FALSE, TRUE, bSizeBox );	/* 縦?横の分割ボックスのON/OFF */
//		if( NULL != pcViewArr[3] ) pcViewArr[3]->SplitBoxOnOff( FALSE, FALSE, FALSE );	/* 縦?横の分割ボックスのON/OFF */

		OnSize( 0, 0, 0, 0 );

		if( nAllSplitRowsOld == 1 && nAllSplitColsOld == 1 ){
			/* 上下に分割したとき */
			/* ペインの表示状態を他のビューにコピー */
			if( NULL != pcViewArr[0] && NULL != pcViewArr[2] ){
				pcViewArr[0]->CopyViewStatus( pcViewArr[2] );
			}
			// YAZAKI
			pcViewArr[2]->m_nViewTopLine = pcViewArr[0]->m_nViewTopLine + pcViewArr[0]->m_nViewRowNum;
		}else
		if( nAllSplitRowsOld > 1 && nAllSplitColsOld == 1 ){
		}else
		if( nAllSplitRowsOld == 1 && nAllSplitColsOld > 1 ){
		}else{
			if( bHUp ){
				/* ペインの表示状態を他のビューにコピー */
				if( NULL != pcViewArr[1] && NULL != pcViewArr[0] ){
					pcViewArr[1]->CopyViewStatus( pcViewArr[0] );
				}
				/* ペインの表示状態を他のビューにコピー */
				if( NULL != pcViewArr[3] && NULL != pcViewArr[2] ){
					pcViewArr[3]->CopyViewStatus( pcViewArr[2] );
				}
			}else{
				/* ペインの表示状態を他のビューにコピー */
				if( m_nActivePane != 0 &&
					m_nActivePane != 2 &&
					NULL != pcViewArr[0] &&
					NULL != pcViewArr[1] &&
					NULL != pcViewArr[2] &&
					NULL != pcViewArr[3]
				){
					pcViewArr[1]->CopyViewStatus( pcViewArr[0] );
					pcViewArr[3]->CopyViewStatus( pcViewArr[2] );
				}
			}
		}
		if( m_nActivePane == 0 || m_nActivePane == 1 ){
			if ( pcViewArr[2]->m_nViewTopLine < pcViewArr[2]->m_nCaretPosY ){
				nActivePane = 2;
			}
			else {
				nActivePane = 0;
			}
		}else{
			nActivePane = 2;
		}
	}else
	if( nVertical == 0 &&  nHorizontal > 0 ){
		m_nAllSplitRows = 1;	/* 分割行数 */
		m_nAllSplitCols = 2;	/* 分割桁数 */

		if( m_ChildWndArr[0] != NULL ) ::ShowWindow( m_ChildWndArr[0], SW_SHOW );
		if( m_ChildWndArr[1] != NULL ) ::ShowWindow( m_ChildWndArr[1], SW_SHOW );
		if( m_ChildWndArr[2] != NULL ) ::ShowWindow( m_ChildWndArr[2], SW_HIDE );
		if( m_ChildWndArr[3] != NULL ) ::ShowWindow( m_ChildWndArr[3], SW_HIDE );
		if( NULL != pcViewArr[0] ) pcViewArr[0]->SplitBoxOnOff( FALSE, FALSE, FALSE );	/* 縦?横の分割ボックスのON/OFF */
		if( NULL != pcViewArr[1] ) pcViewArr[1]->SplitBoxOnOff( TRUE, FALSE, bSizeBox );	/* 縦?横の分割ボックスのON/OFF */
//		if( NULL != pcViewArr[2] ) pcViewArr[2]->SplitBoxOnOff( FALSE, FALSE );	/* 縦?横の分割ボックスのON/OFF */
//		if( NULL != pcViewArr[3] ) pcViewArr[3]->SplitBoxOnOff( FALSE, FALSE );	/* 縦?横の分割ボックスのON/OFF */

		OnSize( 0, 0, 0, 0 );

		if( nAllSplitRowsOld == 1 && nAllSplitColsOld == 1 ){
			/* ペインの表示状態を他のビューにコピー */
			if( NULL != pcViewArr[0] && NULL != pcViewArr[1] ){
				pcViewArr[0]->CopyViewStatus( pcViewArr[1] );
			}
		}else
		if( nAllSplitRowsOld > 1 && nAllSplitColsOld == 1 ){
		}else
		if( nAllSplitRowsOld == 1 && nAllSplitColsOld > 1 ){
		}else{
			if( bVUp ){
				/* ペインの表示状態を他のビューにコピー */
				if( NULL != pcViewArr[2] && NULL != pcViewArr[0] ){
					pcViewArr[2]->CopyViewStatus( pcViewArr[0] );
				}
				/* ペインの表示状態を他のビューにコピー */
				if( NULL != pcViewArr[3] && NULL != pcViewArr[1] ){
					pcViewArr[3]->CopyViewStatus( pcViewArr[1] );
				}
			}else{
				/* ペインの表示状態を他のビューにコピー */
				if( m_nActivePane != 0 &&
					m_nActivePane != 1 &&
					NULL != pcViewArr[0] &&
					NULL != pcViewArr[1] &&
					NULL != pcViewArr[2] &&
					NULL != pcViewArr[3]
				){
					pcViewArr[2]->CopyViewStatus( pcViewArr[0] );
					pcViewArr[3]->CopyViewStatus( pcViewArr[1] );
				}
			}
		}
		if( m_nActivePane == 0 || m_nActivePane == 2 ){
			nActivePane = 0;
		}else{
			nActivePane = 1;
		}
	}else{
		m_nAllSplitRows = 2;	/* 分割行数 */
		m_nAllSplitCols = 2;	/* 分割桁数 */
		if( m_ChildWndArr[0] != NULL ){ ::ShowWindow( m_ChildWndArr[0], SW_SHOW );}
		if( m_ChildWndArr[1] != NULL ){ ::ShowWindow( m_ChildWndArr[1], SW_SHOW );}
		if( m_ChildWndArr[2] != NULL ){ ::ShowWindow( m_ChildWndArr[2], SW_SHOW );}
		if( m_ChildWndArr[3] != NULL ){ ::ShowWindow( m_ChildWndArr[3], SW_SHOW );}
		if( NULL != pcViewArr[0] ){ pcViewArr[0]->SplitBoxOnOff( FALSE, FALSE, FALSE );}	/* 縦?横の分割ボックスのON/OFF */
		if( NULL != pcViewArr[1] ){ pcViewArr[1]->SplitBoxOnOff( FALSE, FALSE, FALSE );}	/* 縦?横の分割ボックスのON/OFF */
		if( NULL != pcViewArr[2] ){ pcViewArr[2]->SplitBoxOnOff( FALSE, FALSE, FALSE );}	/* 縦?横の分割ボックスのON/OFF */
		if( NULL != pcViewArr[3] ){ pcViewArr[3]->SplitBoxOnOff( FALSE, FALSE, bSizeBox );}	/* 縦?横の分割ボックスのON/OFF */

		OnSize( 0, 0, 0, 0 );

		if( nAllSplitRowsOld == 1 && nAllSplitColsOld == 1 ){
			/* ペインの表示状態を他のビューにコピー */
			if( NULL != pcViewArr[0] && NULL != pcViewArr[1] ){
				pcViewArr[0]->CopyViewStatus( pcViewArr[1] );
			}
			/* ペインの表示状態を他のビューにコピー */
			if( NULL != pcViewArr[0] && NULL != pcViewArr[2] ){
				pcViewArr[0]->CopyViewStatus( pcViewArr[2] );
			}
			/* ペインの表示状態を他のビューにコピー */
			if( NULL != pcViewArr[0] && NULL != pcViewArr[3] ){
				pcViewArr[0]->CopyViewStatus( pcViewArr[3] );
			}
		}else
		if( nAllSplitRowsOld > 1 && nAllSplitColsOld == 1 ){
			/* ペインの表示状態を他のビューにコピー */
			if( NULL != pcViewArr[0] && NULL != pcViewArr[1] ){
				pcViewArr[0]->CopyViewStatus( pcViewArr[1] );
			}
			/* ペインの表示状態を他のビューにコピー */
			if( NULL != pcViewArr[2] && NULL != pcViewArr[3] ){
				pcViewArr[2]->CopyViewStatus( pcViewArr[3] );
			}
		}else
		if( nAllSplitRowsOld == 1 && nAllSplitColsOld > 1 ){
			/* ペインの表示状態を他のビューにコピー */
			if( NULL != pcViewArr[0] && NULL != pcViewArr[2] ){
				pcViewArr[0]->CopyViewStatus( pcViewArr[2] );
			}
			/* ペインの表示状態を他のビューにコピー */
			if( NULL != pcViewArr[1] && NULL != pcViewArr[3] ){
				pcViewArr[1]->CopyViewStatus( pcViewArr[3] );
			}
		}else{
		}
		nActivePane = m_nActivePane;
	}
	OnSize( 0, 0, 0, 0 );

	/* アクティブになったことをペインに通知 */
	if( m_ChildWndArr[nActivePane] != NULL ){
		::PostMessage( m_ChildWndArr[nActivePane], MYWM_SETACTIVEPANE, 0, 0 );
	}
#if 0
	if( NULL != pcViewArr[0] ){
		pcViewArr[0]->RedrawAll();	/* フォーカス移動時の再描画 */
	}
	if( NULL != pcViewArr[1] ){
		pcViewArr[1]->RedrawAll();	/* フォーカス移動時の再描画 */
	}
	if( NULL != pcViewArr[2] ){
		pcViewArr[2]->RedrawAll();	/* フォーカス移動時の再描画 */
	}
	if( NULL != pcViewArr[3] ){
		pcViewArr[3]->RedrawAll();	/* フォーカス移動時の再描画 */
	}
	if( NULL != pcViewArr[nActivePane] ){
		pcViewArr[nActivePane]->RedrawAll();	/* フォーカス移動時の再描画 */
	}
#endif
	return;
}

/* アクティブペインの設定 */
void CSplitterWnd::SetActivePane( int nIndex )
{
	m_nActivePane = nIndex;
	return;
}


/* 縦分割ON/OFF */
void CSplitterWnd::VSplitOnOff( void )
{
	RECT		rc;
	::GetClientRect( m_hWnd, &rc );

	if( m_nAllSplitRows == 1 && m_nAllSplitCols == 1 ){
		DoSplit( 0, rc.bottom / 2 );
	}else
	if( m_nAllSplitRows == 1 && m_nAllSplitCols > 1 ){
		DoSplit( m_nHSplitPos, rc.bottom / 2 );
	}else
	if( m_nAllSplitRows > 1 && m_nAllSplitCols == 1 ){
		DoSplit( 0, 0 );
	}else{
		DoSplit( m_nHSplitPos, 0 );
	}
	return;
}



/* 横分割ON/OFF */
void CSplitterWnd::HSplitOnOff( void )
{
	RECT		rc;
	::GetClientRect( m_hWnd, &rc );

	if( m_nAllSplitRows == 1 && m_nAllSplitCols == 1 ){
		DoSplit( rc.right / 2, 0 );
	}else
	if( m_nAllSplitRows == 1 && m_nAllSplitCols > 1 ){
		DoSplit( 0, 0 );
	}else
	if( m_nAllSplitRows > 1 && m_nAllSplitCols == 1 ){
		DoSplit( rc.right / 2 , m_nVSplitPos );
	}else{
		DoSplit( 0, m_nVSplitPos );
	}
	return;
}



/* 縦横分割ON/OFF */
void CSplitterWnd::VHSplitOnOff( void )
{
	int		nX;
	int		nY;
	RECT	rc;
	::GetClientRect( m_hWnd, &rc );

	if( m_nAllSplitRows > 1 && m_nAllSplitCols > 1 ){
		nX = 0;
		nY = 0;
	}else{
		if( m_nAllSplitRows == 1){
			nY = rc.bottom / 2;
		}else{
			nY = m_nVSplitPos;
		}
		if( m_nAllSplitCols == 1 ){
			nX = rc.right / 2;
		}else{
			nX = m_nHSplitPos;
		}
	}
	DoSplit( nX, nY );

	return;
}


/* 前のペインを返す */
int CSplitterWnd::GetPrevPane( void )
{
	int		nPane;
	nPane = -1;
	if( m_nAllSplitRows == 1 &&	m_nAllSplitCols == 1 ){
		nPane = -1;
	}else
	if( m_nAllSplitRows == 2 &&	m_nAllSplitCols == 1 ){
		switch( m_nActivePane ){
		case 0:
			nPane = -1;
			break;
		case 2:
			nPane = 0;
			break;
		}
	}else
	if( m_nAllSplitRows == 1 &&	m_nAllSplitCols == 2 ){
		switch( m_nActivePane ){
		case 0:
			nPane = -1;
			break;
		case 1:
			nPane = 0;
			break;
		}
	}else{
		switch( m_nActivePane ){
		case 0:
			nPane = -1;
			break;
		case 1:
			nPane = 0;
			break;
		case 2:
			nPane = 1;
			break;
		case 3:
			nPane = 2;
			break;
		}
	}
	return nPane;
}




/* 次のペインを返す */
int CSplitterWnd::GetNextPane( void )
{
	int		nPane;
	nPane = -1;
	if( m_nAllSplitRows == 1 &&	m_nAllSplitCols == 1 ){
		nPane = -1;
	}else
	if( m_nAllSplitRows == 2 &&	m_nAllSplitCols == 1 ){
		switch( m_nActivePane ){
		case 0:
			nPane = 2;
			break;
		case 2:
			nPane = -1;
			break;
		}
	}else
	if( m_nAllSplitRows == 1 &&	m_nAllSplitCols == 2 ){
		switch( m_nActivePane ){
		case 0:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -