📄 ceditview_command.cpp
字号:
m_nSelectLineTo, /* 範囲選択終了行 */
m_nSelectColmTo /* 範囲選択終了桁 */
);
/* 現在の選択範囲を非選択状態に戻す */
DisableSelectArea( TRUE );
/* カーソルを選択終了位置に移動 */
MoveCursor( rcSel.right, rcSel.bottom, TRUE );
m_nCaretPosX_Prev = m_nCaretPosX;
}else{
nPosX = m_nSelectColmTo;
nPosY = m_nSelectLineTo;
/* 現在の選択範囲を非選択状態に戻す */
DisableSelectArea( TRUE );
if( nPosY >= m_pcEditDoc->m_cLayoutMgr.GetLineCount() ){
/* ファイルの最後に移動 */
Command_GOFILEEND(FALSE);
}else{
/* カーソルを選択終了位置に移動 */
MoveCursor( nPosX, nPosY, TRUE );
m_nCaretPosX_Prev = m_nCaretPosX;
}
}
goto end_of_func;
}
}
}
// 2003.06.28 Moca [EOF]のみの行にカーソルがあるときに右を押しても選択を解除できない問題に対応
/* 現在行のデータを取得 */
pcLayout = m_pcEditDoc->m_cLayoutMgr.Search( m_nCaretPosY );
// 2004.04.02 EOF以降にカーソルがあったときに右を押しても何も起きなかったのを、EOFに移動するように
if( pcLayout )
{
int nIndex = 0;
CMemoryIterator<CLayout> it( pcLayout, m_pcEditDoc->m_cLayoutMgr.GetTabSpace() );
while( !it.end() ){
it.scanNext();
if ( it.getColumn() + it.getColumnDelta() > m_nCaretPosX + it.getColumnDelta() ){
break;
}
if ( it.getIndex() + it.getIndexDelta() > pcLayout->GetLengthWithoutEOL() ){
nIndex += it.getIndexDelta();
break;
}
it.addDelta();
}
nPosX = it.getColumn();
nIndex += it.getIndex();
if( nIndex >= pcLayout->GetLengthWithEOL() ){
/* フリーカーソルモードか */
if( (
m_pShareData->m_Common.m_bIsFreeCursorMode
|| IsTextSelected() && m_bBeginBoxSelect /* 矩形範囲選択中 */
)
&&
/* 改行で終わっているか */
( EOL_NONE != pcLayout->m_cEol )
){
/*-- フリーカーソルモードの場合 --*/
if( nPosX <= m_nCaretPosX ){
/* 最終行か */
if( m_nCaretPosY + 1 == m_pcEditDoc->m_cLayoutMgr.GetLineCount() ){
/* 改行で終わっているか */
if( EOL_NONE != pcLayout->m_cEol.GetType() ){
nPosX = m_nCaretPosX + 1;
}else{
nPosX = m_nCaretPosX;
}
}else{
nPosX = m_nCaretPosX + 1;
}
}else{
nPosX = nPosX;
}
}else{
/*-- フリーカーソルモードではない場合 --*/
/* 最終行か */
if( m_nCaretPosY + 1 == m_pcEditDoc->m_cLayoutMgr.GetLineCount() ){
/* 改行で終わっているか */
if( EOL_NONE != pcLayout->m_cEol.GetType() ){
nPosX = pcLayout->m_pNext ? pcLayout->m_pNext->GetIndent() : 0;
++nPosY;
}else{
}
}else{
nPosX = pcLayout->m_pNext ? pcLayout->m_pNext->GetIndent() : 0;
++nPosY;
}
}
}
// キャレット位置が折り返し位置より右側だった場合の処理
if( nPosX >= m_pcEditDoc->GetDocumentAttribute().m_nMaxLineSize ){
if( m_pcEditDoc->GetDocumentAttribute().m_bKinsokuRet
|| m_pcEditDoc->GetDocumentAttribute().m_bKinsokuKuto ) //@@@ 2002.04.16 MIK
{
if( m_pcEditDoc->m_cLayoutMgr.IsEndOfLine( nPosY, nPosX ) ) //@@@ 2002.04.18
{
nPosX = 0;
++nPosY;
}
}
else
{
nPosX = 0;
++nPosY;
}
}
}else{
// pcLayoutがNULLの場合はnPosX=0に調整
nPosX = 0;
}
MoveCursor( nPosX, nPosY, TRUE );
m_nCaretPosX_Prev = m_nCaretPosX;
if( bSelect ){
/* 現在のカーソル位置によって選択範囲を変更 */
ChangeSelectAreaByCurrentCursor( m_nCaretPosX, m_nCaretPosY );
}
end_of_func:;
}
return;
}
// From Here Oct. 6, 2000 JEPRO 名称をPC-AT互換機系に変更(ROLL/UP/DOWN→PAGE/DOWN/UP)するために以下をコメントアウト
///* スクロールアップ */
//void CEditView::Command_ROLLUP( int bSelect )
//{
// Cursor_UPDOWN( ( m_nViewRowNum / 2 ), bSelect );
// return;
//}
//
//
//
//
///* スクロールダウン */
//void CEditView::Command_ROLLDOWN( int bSelect )
//{
// Cursor_UPDOWN( - ( m_nViewRowNum / 2 ), bSelect );
// return;
//}
// To Here Oct. 6, 2000
/* 半ページアップ */ //Oct. 6, 2000 JEPRO added (実は従来のスクロールダウンそのもの)
void CEditView::Command_HalfPageUp( int bSelect )
{
Cursor_UPDOWN( - ( m_nViewRowNum / 2 ), bSelect );
return;
}
/* 半ページダウン */ //Oct. 6, 2000 JEPRO added (実は従来のスクロールアップそのもの)
void CEditView::Command_HalfPageDown( int bSelect )
{
Cursor_UPDOWN( ( m_nViewRowNum / 2 ), bSelect );
return;
}
/*! 1ページアップ
@date 2000.10.10 JEPRO 作成
@date 2001.12.13 hor 画面に対するカーソル位置はそのままで
1ページアップに動作変更
*/ //Oct. 10, 2000 JEPRO added
void CEditView::Command_1PageUp( int bSelect )
{
// Cursor_UPDOWN( - m_nViewRowNum, bSelect );
// 2001.12.03 hor
// メモ帳ライクに、画面に対するカーソル位置はそのままで1ページアップ
if(m_nViewTopLine>=m_nViewRowNum-1){
m_bDrawSWITCH = FALSE;
int nViewTopLine=m_nCaretPosY-m_nViewTopLine;
Cursor_UPDOWN( -m_nViewRowNum+1, bSelect );
// Sep. 11, 2004 genta 同期スクロール処理のため
// RedrawAllではなくScrollAtを使うように
SyncScrollV( ScrollAtV( m_nCaretPosY-nViewTopLine ));
m_bDrawSWITCH = TRUE;
RedrawAll();
}else{
Cursor_UPDOWN( -m_nViewRowNum+1, bSelect );
}
return;
}
/*! 1ページダウン
@date 2000.10.10 JEPRO 作成
@date 2001.12.13 hor 画面に対するカーソル位置はそのままで
1ページダウンに動作変更
*/
void CEditView::Command_1PageDown( int bSelect )
{
// Cursor_UPDOWN( m_nViewRowNum, bSelect );
// 2001.12.03 hor
// メモ帳ライクに、画面に対するカーソル位置はそのままで1ページダウン
if(m_nViewTopLine+m_nViewRowNum <= m_pcEditDoc->m_cLayoutMgr.GetLineCount() ){ //- m_nViewRowNum){
m_bDrawSWITCH = FALSE;
int nViewTopLine=m_nCaretPosY-m_nViewTopLine;
Cursor_UPDOWN( m_nViewRowNum-1, bSelect );
// Sep. 11, 2004 genta 同期スクロール処理のため
// RedrawAllではなくScrollAtを使うように
SyncScrollV( ScrollAtV( m_nCaretPosY-nViewTopLine ));
m_bDrawSWITCH = TRUE;
RedrawAll();
}else{
Cursor_UPDOWN( m_nViewRowNum , bSelect );
Command_DOWN( bSelect, TRUE );
}
return;
}
/* カーソル上移動(2行づつ) */
void CEditView::Command_UP2( int bSelect )
{
Cursor_UPDOWN( -2, bSelect );
return;
}
/* カーソル下移動(2行づつ) */
void CEditView::Command_DOWN2( int bSelect )
{
Cursor_UPDOWN( 2, bSelect );
return;
}
/*! @brief 行頭に移動
@param bSelect [in] 選択の有無。true: 選択しながら移動。false: 選択しないで移動。
@param lparam [in] マクロから使用する拡張フラグ
@li 0: キー操作と同一(default)
@li 1: カーソル位置に関係なく行頭に移動。
@li 4: 選択して移動(合成可)
@li 8: 改行単位で先頭に移動(合成可)
@date Oct. 29, 2001 genta マクロ用機能拡張(パラメータ追加) + goto排除
@date May. 15, 2002 oak 改行単位移動
@date Oct. 7, 2002 YAZAKI 冗長な引数 bLineTopOnly を削除
*/
void CEditView::Command_GOLINETOP( int bSelect, int lparam )
{
bool bLineTopOnly = false;
int nCaretPosX;
int nCaretPosY;
int nPos;
int nPosY;
const CLayout* pcLayout;
if( lparam & 1 ){
bLineTopOnly = true;
}
if( lparam & 4 ){
bSelect = TRUE;
}
if( bSelect ){
if( !IsTextSelected() ){ /* テキストが選択されているか */
/* 現在のカーソル位置から選択を開始する */
BeginSelectArea();
}
}else{
if( IsTextSelected() ){ /* テキストが選択されているか */
/* 現在の選択範囲を非選択状態に戻す */
DisableSelectArea( TRUE );
}
}
if ( lparam & 8 ){
/* 改行単位指定の場合は、物理行頭位置から目的論理位置を求める */
m_pcEditDoc->m_cLayoutMgr.CaretPos_Phys2Log(
0,
m_nCaretPosY_PHY,
&nCaretPosX,
&nCaretPosY
);
}else{
pcLayout = m_pcEditDoc->m_cLayoutMgr.Search( m_nCaretPosY );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -