📄 ceditview.h
字号:
// $Id: CEditView.h,v 1.82 2005/04/22 21:42:46 genta Exp $
/*! @file
@brief 文書ウィンドウの管理
@author Norio Nakatani
@date 1998/03/13 作成
$Revision: 1.82 $
*/
/*
Copyright (C) 1998-2001, Norio Nakatani
Copyright (C) 2000-2001, genta
Copyright (C) 2001, MIK, hor
Copyright (C) 2002, hor, YAZAKI, novice, aroka
Copyright (C) 2003, MIK
This source code is designed for sakura editor.
Please contact the copyright holder to use this code for other purpose.
*/
#ifndef _CEDITVIEW_H_
#define _CEDITVIEW_H_
#define _CARETMARGINRATE 20
#include <windows.h>
#include "CShareData.h"
#include "CTipWnd.h"
#include "CDicMgr.h"
#include "CHokanMgr.h"
// Jun. 26, 2001 genta 正規表現ライブラリの差し替え
#include "CBregexp.h"
#include "CEOL.h"
class CDropTarget; /// 2002/2/3 aroka ヘッダ軽量化
class CMemory;///
class COpe;///
class COpeBlk;///
class CSplitBoxWnd;///
class CDlgCancel;///
class CRegexKeyword;///
class CAutoMarkMgr; /// 2002/2/3 aroka ヘッダ軽量化 to here
class CEditDoc; // 2002/5/13 YAZAKI ヘッダ軽量化
class CLayout; // 2002/5/13 YAZAKI ヘッダ軽量化
class CDocLine;
class CMigemo; // 2004.09.14 isearch
#ifndef IDM_COPYDICINFO
#define IDM_COPYDICINFO 2000
#endif
#if !defined(RECONVERTSTRING) && (WINVER < 0x040A)
typedef struct tagRECONVERTSTRING {
DWORD dwSize;
DWORD dwVersion;
DWORD dwStrLen;
DWORD dwStrOffset;
DWORD dwCompStrLen;
DWORD dwCompStrOffset;
DWORD dwTargetStrLen;
DWORD dwTargetStrOffset;
} RECONVERTSTRING, *PRECONVERTSTRING;
#endif // RECONVERTSTRING
class CEditView;
/*-----------------------------------------------------------------------
クラスの宣言
-----------------------------------------------------------------------*/
class SAKURA_CORE_API CCaretUnderLine
{
public:
CCaretUnderLine(){
m_nLockCounter = 0;
};
void Lock(){ // 表示非表示を切り替えられないようにする
m_nLockCounter++;
}
void UnLock(){ // 表示非表示を切り替えられるようにする
m_nLockCounter--;
if (m_nLockCounter < 0){
m_nLockCounter = 0;
};
}
void CaretUnderLineON( BOOL ); /* カーソル行アンダーラインのON */
void CaretUnderLineOFF( BOOL ); /* カーソル行アンダーラインのOFF */
void SetView( CEditView* pcEditView ){
m_pcEditView = pcEditView;
};
protected:
/* ロックカウンタ。0のときは、ロックされていない。UnLockが呼ばれすぎても負にはならない */
int m_nLockCounter;
CEditView* m_pcEditView;
};
/*!
@brief 文書ウィンドウの管理
1つの文書ウィンドウにつき1つのCEditDocオブジェクトが割り当てられ、
1つのCEditDocオブジェクトにつき、4つのCEditViweオブジェクトが割り当てられる。
ウィンドウメッセージの処理、コマンドメッセージの処理、
画面表示などを行う。
@date 2002.2.17 YAZAKI CShareDataのインスタンスは、CProcessにひとつあるのみ。
*/
class SAKURA_CORE_API CEditView/* : public CDropTarget*/
{
public:
/* Constructors */
CEditView();
~CEditView();
/* 初期化系メンバ関数 */
BOOL Create( HINSTANCE, HWND, CEditDoc*, int,/* BOOL,*/ BOOL );
/* 状態 */
//<< 2002/03/29 Azumaiya インライン関数化
BOOL IsTextSelected( void ) /* テキストが選択されているか */
{
// ジャンプ回数を減らして、一気に判定。
// すべてを or 演算した後に、ビット反転して最上位ビット(符号フラグ)を返す。
/* すなわち、いずれかがひとつでも-1(0xFFFF)なら、FALSEを返す? */
return ~((DWORD)(m_nSelectLineFrom|m_nSelectLineTo|m_nSelectColmFrom|m_nSelectColmTo)) >> 31;
};
BOOL IsTextSelecting( void ) /* テキストの選択中か */
{
// ジャンプ回数を減らして、一気に判定。
return m_bSelectingLock|IsTextSelected();
};
//>> 2002/03/29 Azumaiya
/* メッセージディスパッチャ */
LRESULT DispatchEvent( HWND, UINT, WPARAM, LPARAM );
void OnMove( int, int, int, int );
void OnSetFocus( void );
void OnKillFocus( void );
void OnTimer( HWND, UINT, UINT, DWORD );
BOOL HandleCommand( int, BOOL, LPARAM, LPARAM, LPARAM, LPARAM );
/* コマンド操作 */
void CaretUnderLineON( BOOL ); /* カーソル行アンダーラインのON */
void CaretUnderLineOFF( BOOL ); /* カーソル行アンダーラインのOFF */
void AdjustScrollBars( void ); /* スクロールバーの状態を更新する */
int MoveCursor( int, int, BOOL, int = _CARETMARGINRATE ); /* 行桁指定によるカーソル移動 */
BOOL GetAdjustCursorPos( int *, int *); // 正しいカーソル位置を算出する
BOOL DetectWidthOfLineNumberArea( BOOL ); /* 行番号表示に必要な幅を設定 */
int DetectWidthOfLineNumberArea_calculate( void ); /* 行番号表示に必要な桁数を計算 */
void DisableSelectArea( BOOL ); /* 現在の選択範囲を非選択状態に戻す */
void OnChangeSetting( void ); /* 設定変更を反映させる */
void SetFont( void ); /* フォントの変更 */
void RedrawAll( void ); /* フォーカス移動時の再描画 */
void Redraw( void ); // 2001/06/21 asa-o 再描画
void CopyViewStatus( CEditView* ); /* 自分の表示状態を他のビューにコピー */
void SplitBoxOnOff( BOOL, BOOL, BOOL ); /* 縦?横の分割ボックス?サイズボックスのON/OFF */
DWORD DoGrep( const CMemory*, const CMemory*, const CMemory*, BOOL, BOOL, BOOL, int, BOOL, BOOL, int ); /* Grep実行 */
/* Grep実行 */ // Jun. 26, 2001 genta 正規表現ライブラリの差し替え
int DoGrepTree( CDlgCancel*, HWND, const char*, int*, const char*, const char*, BOOL, BOOL, BOOL, int, BOOL, BOOL, int, CBregexp*, int, int* );
/* Grep実行 */ // Jun. 26, 2001 genta 正規表現ライブラリの差し替え
// Mar. 28, 2004 genta 不要な引数を削除
int DoGrepFile( CDlgCancel*, HWND, const char*, int*, const char*, BOOL, BOOL, int, BOOL, BOOL, int, CBregexp*, int*, const char*, CMemory& );
/* Grep結果をpszWorkに格納 */
void SetGrepResult(
/* データ格納先 */
char* pWork,
int* pnWorkLen,
/* マッチしたファイルの情報 */
const char* pszFullPath, // フルパス
const char* pszCodeName, // 文字コード情報"[SJIS]"とか
/* マッチした行の情報 */
int nLine, // マッチした行番号
int nColm, // マッチした桁番号
const char* pCompareData, // 行の文字列
int nLineLen, // 行の文字列の長さ
int nEolCodeLen, // EOLの長さ
/* マッチした文字列の情報 */
const char* pMatchData, // マッチした文字列
int nMatchLen, // マッチした文字列の長さ
/* オプション */
BOOL bGrepOutputLine,
int nGrepOutputStyle
);
// Jun. 16, 2000 genta
bool SearchBracket( int PosX, int PosY, int* NewX, int* NewY, int* mode ); // 対括弧の検索 // modeの追加 02/09/18 ai
bool SearchBracketForward( int PosX, int PosY, int* NewX, int* NewY,
char* upChar, char* dnChar, int* mode ); // 対括弧の前方検索 // modeの追加 02/09/19 ai
bool SearchBracketBackward( int PosX, int PosY, int* NewX, int* NewY,
char* dnChar, char* upChar, int* mode ); // 対括弧の後方検索 // modeの追加 02/09/19 ai
//@@@ 2001.02.03 Start by MIK: 全角の対括弧
bool SearchBracketForward2( int PosX, int PosY, int* NewX, int* NewY,
char* upChar, char* dnChar, int* mode ); // 対括弧の前方検索 // modeの追加 02/09/19 ai
bool SearchBracketBackward2( int PosX, int PosY, int* NewX, int* NewY,
char* dnChar, char* upChar, int* mode ); // 対括弧の後方検索 // modeの追加 02/09/19 ai
//@@@ 2001.02.03 End
// 2001/06/18 asa-o
bool ShowKeywordHelp( POINT po, LPCTSTR pszHelp, LPRECT prcHokanWin); // 補完ウィンドウ用のキーワードヘルプ表示
// 2002/01/19 novice public属性に変更
BOOL GetSelectedData( CMemory&, BOOL, const char*, BOOL, BOOL bAddCRLFWhenCopy, enumEOLType neweol = EOL_UNKNOWN);/* 選択範囲のデータを取得 */
// Aug. 25, 2002 genta protected->publicに移動
void ShowEditCaret( void ); /* キャレットの表示?更新 */
int HokanSearchByFile( const char*, BOOL, CMemory**, int, int ); // 2003.06.25 Moca
// Jan. 10, 2005 インクリメンタルサーチ
bool IsISearchEnabled(int nCommand) const;
public: /* テスト用にアクセス属性を変更 */
CDropTarget* m_pcDropTarget;
BOOL m_bDrawSWITCH;
BOOL m_bDragSource; /* 選択テキストのドラッグ中か */
BOOL m_bDragMode; /* 選択テキストのドラッグ中か */
/* 単語検索の状態 */
// Jun. 26, 2001 genta 正規表現ライブラリの差し替え
CBregexp m_CurRegexp; /*!< コンパイルデータ */
BOOL m_bCurSrchKeyMark; /* 検索文字列のマーク */
char m_szCurSrchKey[_MAX_PATH]; /* 検索文字列 */
int m_bCurSrchRegularExp; /* 検索/置換 1==正規表現 */
int m_bCurSrchLoHiCase; /* 検索/置換 1==英大文字小文字の区別 */
int m_bCurSrchWordOnly; /* 検索/置換 1==単語のみ検索 */
BOOL m_bExecutingKeyMacro; /* キーボードマクロの実行中 */
// BOOL m_bGrepRunning;
// HANDLE m_hThreadGrep; @@@ 2002.01.03 YAZAKI 使用していないため
HWND m_hWnd; /* 編集ウィンドウハンドル */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -