/*-----------------------------------------------------------------------------
[名称]	CommandCaret.h
[概要]	キャレット移動コマンドクラスのヘッダ
[備考]	なし
[履歴]	2003-02-26	NC		コメント付加(moralog)
-----------------------------------------------------------------------------*/
#if !defined(AFX_COMMANDCARET_H_INCLUDED_)
#define AFX_COMMANDCARET_H_INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


//-----------------------------------------------------------------------------
// インクルード
//-----------------------------------------------------------------------------
#include "ICommand.h"


/*-----------------------------------------------------------------------------
[名称]	キャレット移動コマンドクラス
[用途]	キャレット移動に関する操作の実行、取り消し機能を提供する。
[備考]	使用方法：ICommandの使用方法を参照。
		キャレット移動にUndo, ReDo機能を利用する必要はないと思われ。
-----------------------------------------------------------------------------*/
class CCommandCaret : public ICommand  
{
public:
	// 生成・破棄
	CCommandCaret();
	virtual ~CCommandCaret();

	// 属性の設定
	void SetAttribute(
		char		nType,
		long		idxRow,
		long		idxColumn
	);

protected:
	char			m_nType;		// 移動タイプ [仮想キー] (0x00:直接移動)
	long			m_idxRow;		// 入力されたキャレット位置 [行] (-)
	long			m_idxColumn;	// 入力されたキャレット位置 [列] (-)

// オーバライド
public:
	// メモリを確保して複製
	virtual ICommand*	Duplicate();

	// 属性をコピー
	virtual void		Copy( ICommand& cmdSrc );

	// 実行
	virtual BOOL		Execute( CShitarabianDoc* pDoc );

	// 取り消し
	virtual BOOL		UnExecute( CShitarabianDoc* pDoc );

};

#endif // !defined(AFX_COMMANDCARET_H_INCLUDED_)
