📄 csplitterwnd.cpp
字号:
/* ペインの表示状態を他のビューにコピー */
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 + -