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

📄 ceditview.h

📁 日本的开源编辑器源码
💻 H
📖 第 1 页 / 共 4 页
字号:
//	$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 + -