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
型 (または派生したCEditView
型CEditView
) のオブジェクトには、次の制限があります。
CEditView
は、あなたが見るものがあなたが得るもの(WYSIWYG)編集である真を実装していません。 画面上の読みやすさと一致する印刷出力の選択がある場合は、CEditView
画面の読みやすさを選択します。CEditView
では、テキストを 1 つのフォントでのみ表示できます。 特殊文字の書式設定はサポートされていません。 より優れた機能については、CRichEditView クラスを参照してください。含めることができるテキスト
CEditView
の量は限られています。 制限はコントロールの場合CEdit
と同じです。
詳細についてはCEditView
、「MFC で使用できる派生ビュー クラス」を参照してください。
継承階層
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 を返します。
通常、オーバーライドOnFindNext
FindText
しない限り、関数を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
オブジェクト内のテキストCEditView
をCArchive
テキスト ファイルに読み取ったり書き込んだりする呼び出しSerializeRaw
。
void SerializeRaw(CArchive& ar);
パラメーター
ar
CArchive
シリアル化されたテキストを格納するオブジェクトへの参照。
解説
SerializeRaw
CEditView
は、オブジェクト記述データに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 クラス
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示