CEditView クラス

Windows のエディット コントロールの機能を提供するビュー クラスの一種であり、シンプルなテキスト編集エディターを実装できます。

構文

class CEditView : public CCtrlView

メンバー

パブリック コンストラクター

名前 説明
CEditView::CEditView CEditView 型のオブジェクトを構築します。

パブリック メソッド

名前 説明
CEditView::FindText テキスト内の文字列を検索します。
CEditView::GetBufferLength 文字バッファーの長さを取得します。
CEditView::GetEditCtrl オブジェクトのCEditView部分 (Windows 編集コントロール) へのCEditアクセスを提供します。
CEditView::GetPrinterFont 現在のプリンター フォントを取得します。
CEditView::GetSelectedText 現在のテキスト選択を取得します。
CEditView::LockBuffer バッファーをロックします。
CEditView::P rintInsideRect 指定した四角形内のテキストをレンダリングします。
CEditView::SerializeRaw オブジェクトを CEditView 生テキストとしてディスクにシリアル化します。
CEditView::SetPrinterFont 新しいプリンター フォントを設定します。
CEditView::SetTabStops 画面表示と印刷の両方のタブ位置を設定します。
CEditView::UnlockBuffer バッファーのロックを解除します。

保護メソッド

名前 説明
CEditView::OnFindNext テキスト文字列の次の出現箇所を検索します。
CEditView::OnReplaceAll 指定された文字列のすべての出現箇所を新しい文字列に置き換えます。
CEditView::OnReplaceSel 現在の選択範囲を置き換えます。
CEditView::OnTextNotFound 検索操作がそれ以降のテキストと一致しない場合に呼び出されます。

パブリック データ メンバー

名前 説明
CEditView::d wStyleDefault CEditViewのオブジェクトの既定のスタイル。

解説

このクラスには CEditView 、次の追加関数が用意されています。

  • 印刷。

  • 検索して置き換えます。

クラス CEditView はクラス CViewの派生物であるため、クラス CEditView のオブジェクトはドキュメントおよびドキュメント テンプレートで使用できます。

CEditView コントロールのテキストは、独自のグローバル メモリ オブジェクトに保持されます。 アプリケーションには任意の数のオブジェクトを CEditView 含めることができます。

上記の機能が追加された編集ウィンドウが必要な場合、または単純なテキスト エディター機能が必要な場合は、種類 CEditView のオブジェクトを作成します。 オブジェクトは CEditView 、ウィンドウのクライアント領域全体を占有できます。 基本的な機能を追加または変更したり、ドキュメント テンプレートに追加できるクラスを宣言したりするために、独自 CEditView のクラスを派生させます。

クラスCEditViewの既定の実装では、ID_EDIT_Standard EditionLECT_ALL、ID_EDIT_FIND、ID_EDIT_REPLACE、ID_EDIT_REPEAT、ID_FILE_PRINTの各コマンドが処理されます。

既定の CEditView 文字制限は (1024 * 1024 - 1 = 1048575) です。 これは、基になる編集コントロールのEM_LIMITTEXT関数を呼び出すことによって変更できます。 ただし、制限は、オペレーティング システムと編集コントロールの種類 (単一行または複数行) によって異なります。 これらの制限の詳細については、EM_LIMITTEXTを参照してください

コントロールでこの制限を変更するには、クラスの関数をOnCreate()CEditViewオーバーライドし、次のコード行を挿入します。

GetEditCtrl().SetLimitText(nNewVal); //nNewVal, the new character limit

型 (または派生したCEditViewCEditView) のオブジェクトには、次の制限があります。

  • CEditView は、あなたが見るものがあなたが得るもの(WYSIWYG)編集である真を実装していません。 画面上の読みやすさと一致する印刷出力の選択がある場合は、 CEditView 画面の読みやすさを選択します。

  • CEditView では、テキストを 1 つのフォントでのみ表示できます。 特殊文字の書式設定はサポートされていません。 より優れた機能については、CRichEditView クラスを参照してください。

  • 含めることができるテキスト CEditView の量は限られています。 制限はコントロールの場合 CEdit と同じです。

詳細についてはCEditView、「MFC で使用できる派生ビュー クラス」を参照してください

継承階層

CObject

CCmdTarget

CWnd

CView

CCtrlView

CEditView

必要条件

ヘッダー: afxext.h

CEditView::CEditView

CEditView 型のオブジェクトを構築します。

CEditView();

解説

オブジェクトを構築した後、編集コントロールを使用する前に CWnd::Create 関数を呼び出す必要があります。 クラス CEditView を派生させ、それを使用して CWinApp::AddDocTemplateテンプレートに追加すると、フレームワークはこのコンストラクターと関数の両方を Create 呼び出します。

CEditView::d wStyleDefault

オブジェクトの既定のスタイルを CEditView 格納します。

static const DWORD dwStyleDefault;

解説

この静的メンバーを関数の dwStyle パラメーターとして渡して、 Create オブジェクトの既定のスタイルを CEditView 取得します。

CEditView::FindText

関数を FindText 呼び出して、オブジェクトの CEditView テキスト バッファーを検索します。

BOOL FindText(
    LPCTSTR lpszFind,
    BOOL bNext = TRUE,
    BOOL bCase = TRUE);

パラメーター

lpszFind
検索するテキスト。

Bnext
検索の方向を指定します。 TRUE の場合、検索方向はバッファーの末尾に向かって行います。 FAL Standard Edition の場合、検索方向はバッファーの先頭に向かって行います。

bCase
検索で大文字と小文字が区別されるかどうかを指定します。 TRUE の場合、検索では大文字と小文字が区別されます。 FAL Standard Edition の場合、検索では大文字と小文字は区別されません。

戻り値

検索テキストが見つかった場合は 0 以外。それ以外の場合は 0。

解説

この関数は、バッファー内のテキストで lpszFind指定されたテキストを検索し、現在の選択範囲から始まり、bNext指定された方向に、bCase指定された大文字と小文字の区別を指定します。 テキストが見つかった場合は、選択範囲を見つかったテキストに設定し、0 以外の値を返します。 テキストが見つからない場合、関数は 0 を返します。

通常、オーバーライドOnFindNextFindTextしない限り、関数をFindText呼び出す必要はありません。

CEditView::GetBufferLength

このメンバー関数を呼び出して、null ターミネータを含まない編集コントロールのバッファーに現在含まれている文字数を取得します。

UINT GetBufferLength() const;

戻り値

バッファー内の文字列の長さ。

CEditView::GetEditCtrl

編集ビューで使用される編集コントロールへの参照を取得する呼び出し GetEditCtrl

CEdit& GetEditCtrl() const;

戻り値

CEdit オブジェクトへの参照です。

解説

このコントロールは CEditであるため、メンバー関数を使用して Windows 編集コントロールをCEdit直接操作できます。

注意事項

オブジェクトを CEdit 使用すると、基になる Windows 編集コントロールの状態を変更できます。 たとえば、編集コントロールと印刷の両方で使用するためにこれらの設定をキャッシュするためCEditView、CEdit::SetTabStops 関数を使用してタブ設定を変更しないでください。 代わりに、CEditView::SetTabStops を使用 します

void CMyEditView::OnInitialUpdate()
{
   CEditView::OnInitialUpdate();

   // get the edit control and set some initial properties for it
   CEdit &theEdit = GetEditCtrl();

   // adjust the left margin without changing the right margin
   DWORD dwMargins = theEdit.GetMargins();
   theEdit.SetMargins(20, HIWORD(dwMargins));

   // only accept 10k of text
   theEdit.SetLimitText(10 * 1024);
}

CEditView::GetPrinterFont

現在のプリンター フォントを記述する CFont オブジェクトへのポインターを取得する呼び出GetPrinterFontし。

CFont* GetPrinterFont() const;

戻り値

現在のプリンター フォントを CFont 指定するオブジェクトへのポインター。プリンターのフォントが設定されていない場合は NULL。 ポインターは一時的である可能性があり、後で使用するために格納しないでください。

解説

プリンター フォントが設定されていない場合、クラスの既定の CEditView 印刷動作は、表示に使用されるのと同じフォントを使用して印刷することです。

この関数を使用して、現在のプリンター フォントを確認します。 目的のプリンター フォントでない場合は、CEditView::SetPrinterFont を使用して変更します。

CEditView::GetSelectedText

選択範囲の末尾まで、または選択範囲の最初の復帰文字の前の文字まで、選択したテキストCStringをオブジェクトにコピーする呼び出しGetSelectedText

void GetSelectedText(CString& strResult) const;

パラメーター

strResult
選択したテキストを CString 受け取るオブジェクトへの参照。

CEditView::LockBuffer

このメンバー関数を呼び出して、バッファーへのポインターを取得します。 バッファーは変更しないでください。

LPCTSTR LockBuffer() const;

戻り値

エディット コントロールのバッファーへのポインター。

CEditView::OnFindNext

バッファー内のテキストで、bNext で指定された方向の lpszFind指定されたテキストを、bCase で指定された大文字と小文字を区別して検索します。

virtual void OnFindNext(
    LPCTSTR lpszFind,
    BOOL bNext,
    BOOL bCase);

パラメーター

lpszFind
検索するテキスト。

Bnext
検索の方向を指定します。 TRUE の場合、検索方向はバッファーの末尾に向かって行います。 FAL Standard Edition の場合、検索方向はバッファーの先頭に向かって行います。

bCase
検索で大文字と小文字が区別されるかどうかを指定します。 TRUE の場合、検索では大文字と小文字が区別されます。 FAL Standard Edition の場合、検索では大文字と小文字は区別されません。

解説

検索は現在の選択範囲の先頭から開始され、FindText の 呼び出しによって実行されます。 既定の実装では、OnFindNextテキストが見つからない場合は OnTextNotFound を呼び出します

オーバーライド OnFindNext して、-derived オブジェクトがテキストを CEditView検索する方法を変更します。 CEditView は、ユーザーが標準の [検索] ダイアログ ボックスで [次を検索] ボタンを選択したときに呼び出 OnFindNext されます。

CEditView::OnReplaceAll

CEditView は、ユーザーが標準の [置換] ダイアログ ボックスで [すべて置換] ボタンを選択したときに呼び出 OnReplaceAll されます。

virtual void OnReplaceAll(
    LPCTSTR lpszFind,
    LPCTSTR lpszReplace,
    BOOL bCase);

パラメーター

lpszFind
検索するテキスト。

lpszReplace
検索テキストを置き換えるテキスト。

bCase
検索で大文字と小文字が区別されるかどうかを指定します。 TRUE の場合、検索では大文字と小文字が区別されます。 FAL Standard Edition の場合、検索では大文字と小文字は区別されません。

解説

OnReplaceAllでは、バッファー内のテキストで lpszFind指定されたテキストが検索され、大文字と小文字の区別が bCase指定されます。 検索は、現在の選択範囲の先頭から開始されます。 検索テキストが見つかるたびに、この関数はテキストの出現箇所を lpszReplace指定されたテキストに置き換えます。 検索は FindText の 呼び出しによって実行されます。 既定の実装では、 テキストが見つからない場合は OnTextNotFound が呼び出されます。

現在の選択範囲が lpszFind と一致しない場合、選択は lpszFind指定されたテキストの最初の出現箇所に更新され、置換は実行されません。 これにより、ユーザーは、選択内容が置き換えられるテキストと一致しない場合に、これが行う必要があることを確認できます。

オーバーライド OnReplaceAll して、-derived オブジェクトがテキストを CEditView置き換える方法を変更します。

CEditView::OnReplaceSel

CEditView は、ユーザーが標準の [置換] ダイアログ ボックスで [置換] ボタンを選択したときに呼び出 OnReplaceSel されます。

virtual void OnReplaceSel(
    LPCTSTR lpszFind,
    BOOL bNext,
    BOOL bCase,
    LPCTSTR lpszReplace);

パラメーター

lpszFind
検索するテキスト。

Bnext
検索の方向を指定します。 TRUE の場合、検索方向はバッファーの末尾に向かって行います。 FAL Standard Edition の場合、検索方向はバッファーの先頭に向かって行います。

bCase
検索で大文字と小文字が区別されるかどうかを指定します。 TRUE の場合、検索では大文字と小文字が区別されます。 FAL Standard Edition の場合、検索では大文字と小文字は区別されません。

lpszReplace
見つかったテキストを置き換えるテキスト。

解説

選択範囲を置き換えた後、この関数はバッファー内のテキストを検索し、次に lpszFind で指定されたテキストが bNext指定された方向で、bCase で指定された大文字と小文字の区別で検索されます。 検索は FindText の 呼び出しによって実行されます。 テキストが見つからない場合は、 OnTextNotFound が呼び出されます。

選択したテキストを -derived オブジェクトがCEditView置き換える方法を変更するには、オーバーライドOnReplaceSelします。

CEditView::OnTextNotFound

この関数をオーバーライドして、Windows 関数 MessageBeepを呼び出す既定の実装を変更します。

virtual void OnTextNotFound(LPCTSTR lpszFind);

パラメーター

lpszFind
検索するテキスト。

CEditView::P rintInsideRect

rectLayout で指定された四角形内のテキストを印刷する呼び出し。PrintInsideRect

UINT PrintInsideRect(
    CDC *pDC,
    RECT& rectLayout,
    UINT nIndexStart,
    UINT nIndexStop);

パラメーター

pDC
プリンター デバイス コンテキストへのポインター。

rectLayout
テキストを レンダリングする四角形を指定する CRect オブジェクトまたは RECT 構造体 への参照。

nIndexStart
レンダリングされる最初の文字のバッファー内のインデックス。

nIndexStop
レンダリングされる最後の文字の後の文字のバッファー内のインデックス。

戻り値

印刷する次の文字のインデックス (つまり、レンダリングされた最後の文字の後の文字)。

解説

コントロールに CEditView スタイル ES_AUTOHSCROLLがない場合、テキストはレンダリング四角形内にラップされます。 コントロールにスタイル ES_AUTOHSCROLLがある場合、テキストは四角形の右端にクリップされます。

rect.bottom rectLayout オブジェクトの要素が変更され、四角形の寸法によって、テキストによって占有される元の四角形の部分が定義されます。

CEditView::SerializeRaw

オブジェクト内のテキストCEditViewCArchiveテキスト ファイルに読み取ったり書き込んだりする呼び出しSerializeRaw

void SerializeRaw(CArchive& ar);

パラメーター

ar
CArchiveシリアル化されたテキストを格納するオブジェクトへの参照。

解説

SerializeRawCEditViewは、オブジェクト記述データにSerialize先行することなく、テキストのみを読み書きするという点で、'内部実装'とは異なります。

CEditView::SetPrinterFont

pFont指定されたフォントにプリンター フォントを設定する呼び出しSetPrinterFont

void SetPrinterFont(CFont* pFont);

パラメーター

pFont
CFontのオブジェクトへのポインター。 NULL の場合、印刷に使用されるフォントは表示フォントに基づいています。

解説

ビューで印刷に特定のフォントを常に使用する場合は、クラスのOnPreparePrinting関数に呼び出しSetPrinterFontを含めます。 この仮想関数は、印刷が行われる前に呼び出されるため、ビューの内容が印刷される前にフォントの変更が行われます。

CEditView::SetTabStops

この関数を呼び出して、表示と印刷に使用するタブ位置を設定します。

void SetTabStops(int nTabStops);

パラメーター

nTabStops
各タブ位置の幅 (ダイアログ 単位)。

解説

タブストップ幅は 1 つだけサポートされています。 ( CEdit オブジェクトは複数のタブ幅をサポートします)。幅はダイアログ単位で、印刷時または表示時に使用されるフォントの平均文字幅の 4 分の 1 に相当します (大文字と小文字のみ)。 タブストップ値をキャッシュする必要があるためCEditView、使用CEdit::SetTabStopsしないでください。

この関数は、呼び出されるオブジェクトのタブのみを変更します。 アプリケーション内の各 CEditView オブジェクトのタブ位置を変更するには、各オブジェクトの SetTabStops 関数を呼び出します。

このコード フラグメントは、コントロールが使用するフォントを慎重に測定することで、コントロール内のタブ位置を 4 文字ごとに設定します。

// gain a reference to the edit control
CEdit &theEdit = GetEditCtrl();

// get the font the control is using
CFont *pFont = theEdit.GetFont();
TEXTMETRIC tm;

// get the control's DC, too
CDC *pDC = theEdit.GetDC();

// Select the font that the control uses by default into the DC.
// We must do this because the control may or may not be using
// that font at this exact moment
CFont *pOldFont = pDC->SelectObject(pFont);

// Retrieve text metrics for that font and return the previously
// selected font.
pDC->GetTextMetrics(&tm);
pDC->SelectObject(pOldFont);

// Get an identity rectangle and map it to dialog units
CRect rect(0, 0, 100, 1);
::MapDialogRect((HWND)this, rect);

// We now know that 100 dialog units are rect.Width() screen units,
// so we can multiply screen units by 100 and divide by rect.Width()
// to find dialog units from screen units. tm.tmAveCharWidth is
// the width of _one_ character, so setting the tabs at every
// four characters means we also multiply by four.
SetTabStops((4 * tm.tmAveCharWidth * 100) / rect.Width());

CEditView::UnlockBuffer

バッファーのロックを解除するには、このメンバー関数を呼び出します。

void UnlockBuffer() const;

解説

LockBuffer によって返されるポインターの使用が完了した後に呼び出UnlockBufferします。

関連項目

MFC サンプル SUPERPAD
CCtrlView クラス
階層図
CEdit クラス
CDocument クラス
CDocTemplate クラス
CCtrlView クラス
CRichEditView クラス