共用方式為


CEditView 類別

檢視類別的類型,這個類型提供 Windows 編輯控制項功能,而且可用於實作簡單的文字編輯器功能。

語法

class CEditView : public CCtrlView

成員

公用建構函式

名稱 描述
CEditView::CEditView 建構類型 CEditView 的物件。

公用方法

名稱 描述
CEditView::FindText 搜尋文字內的字串。
CEditView::GetBufferLength 取得字元緩衝區的長度。
CEditView::GetEditCtrl 提供物件部分CEditView的存取CEdit權(Windows 編輯控件)。
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_SELECT_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 只能以單一字型顯示文字。 不支援特殊字元格式設定。 如需更大的功能,請參閱 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;

備註

將此靜態成員當做函式的 Create dwStyle 參數傳遞,以取得對象的預設樣式CEditView

CEditView::FindText

呼叫 函 FindText 式以搜尋 CEditView 物件的文字緩衝區。

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

參數

lpszFind
要找到的文字。

bNext
指定搜尋的方向。 如果為 TRUE,則搜尋方向會接近緩衝區的結尾。 如果為 FALSE,搜尋方向會指向緩衝區的開頭。

bCase
指定搜尋是否區分大小寫。 如果為 TRUE,則搜尋會區分大小寫。 如果為 FALSE,則搜尋不會區分大小寫。

傳回值

如果找到搜尋文字,則為非零;否則為 0。

備註

此函式會在緩衝區中搜尋 lpszFind指定的文字,從目前選取範圍開始,依 bNext指定的方向,以及 bCase指定的區分大小寫。 如果找到文字,它會將選取範圍設定為找到的文字,並傳回非零值。 如果找不到文字,函式會傳回 0。

您通常不需要呼叫 函式, FindText 除非您覆寫 OnFindNext會呼叫 FindText的 。

CEditView::GetBufferLength

呼叫這個成員函式,以取得目前在編輯控件緩衝區中的字元數,不包括 Null 終止符。

UINT GetBufferLength() const;

傳回值

緩衝區中字串的長度。

CEditView::GetEditCtrl

呼叫 GetEditCtrl 以取得編輯檢視所使用之編輯控件的參考。

CEdit& GetEditCtrl() const;

傳回值

CEdit 物件的參考。

備註

此控制項的類型 為 CEdit,因此您可以使用成員函式直接 CEdit 操作 Windows 編輯控制件。

警告

CEdit使用物件可以變更基礎 Windows 編輯控制件的狀態。 例如,您不應該使用 CEdit::SetTabStops 函式變更索引標籤設定,因為 CEditView 會快取這些設定以用於編輯控件和列印中。 請改用 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

呼叫 GetPrinterFont 以取得描述目前印表機字型之 CFont 物件的指標

CFont* GetPrinterFont() const;

傳回值

指定目前印表機字型之 物件的指標 CFont ;如果未設定印表機字型,則為 NULL。 該指標可能是暫時性的,因此不應該儲存供日後使用。

備註

如果未設定印表機字型,類別的預設列印行為 CEditView 是使用用於顯示的相同字型進行列印。

使用此函式來判斷目前的印表機字型。 如果不是所需的印表機字型,請使用 CEditView::SetPrinterFont 來變更它。

CEditView::GetSelectedText

呼叫 GetSelectedText 以將選取的文字 CString 複製到 物件,最多選取範圍結尾或選取範圍中第一個歸位字元之前的字元。

void GetSelectedText(CString& strResult) const;

參數

strResult
要接收所選取文字之 對象的參考 CString

CEditView::LockBuffer

呼叫這個成員函式以取得緩衝區的指標。 不應修改緩衝區。

LPCTSTR LockBuffer() const;

傳回值

編輯控件緩衝區的指標。

CEditView::OnFindNext

在緩衝區中搜尋 lpszFind指定的文字,其方向為 bNext 所指定,且 bCase指定的區分大小寫。

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

參數

lpszFind
要找到的文字。

bNext
指定搜尋的方向。 如果為 TRUE,則搜尋方向會接近緩衝區的結尾。 如果為 FALSE,搜尋方向會指向緩衝區的開頭。

bCase
指定搜尋是否區分大小寫。 如果為 TRUE,則搜尋會區分大小寫。 如果為 FALSE,則搜尋不會區分大小寫。

備註

搜尋會從目前選取範圍的開頭開始,並透過呼叫 FindText 來完成。 在默認實作中,如果找不到文字, OnFindNext 則會呼叫 OnTextNotFound

覆寫 OnFindNext 以變更衍生物件搜尋文字的方式 CEditViewCEditView 當使用者在標準 [尋找] 對話框中選擇 [尋找下一步] 按鈕時呼叫 OnFindNext

CEditView::OnReplaceAll

CEditViewOnReplaceAll當使用者在 [標準取代] 對話框中選取 [全部取代] 按鈕時呼叫 。

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

參數

lpszFind
要找到的文字。

lpszReplace
要取代搜尋文字的文字。

bCase
指定搜尋是否區分大小寫。 如果為 TRUE,則搜尋會區分大小寫。 如果為 FALSE,則搜尋不會區分大小寫。

備註

OnReplaceAll在緩衝區中搜尋 lpszFind指定的文字,並具有 bCase指定的區分大小寫。 搜尋會從目前選取範圍的開頭開始。 每次找到搜尋文字時,此函式都會以 lpszReplace 指定的文字取代該出現的文字。 搜尋是透過呼叫 FindText 來完成。 在默認實作中,如果找不到文字, 則會呼叫 OnTextNotFound

如果目前的選取範圍不符合 lpszFind,則會將選取範圍更新為 lpszFind指定的文字第一次出現,而且不會執行取代。 這可讓使用者確認當選取範圍不符合要取代的文字時,這是他們想要執行的動作。

覆寫 OnReplaceAll 以變更衍生物件取代文字的方式 CEditView

CEditView::OnReplaceSel

CEditView 當使用者在 [標準取代] 對話框中選取 [取代] 按鈕時呼叫 OnReplaceSel

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

參數

lpszFind
要找到的文字。

bNext
指定搜尋的方向。 如果為 TRUE,則搜尋方向會接近緩衝區的結尾。 如果為 FALSE,搜尋方向會指向緩衝區的開頭。

bCase
指定搜尋是否區分大小寫。 如果為 TRUE,則搜尋會區分大小寫。 如果為 FALSE,則搜尋不會區分大小寫。

lpszReplace
要取代找到之文字的文字。

備註

取代選取範圍之後,此函式會在緩衝區中搜尋下一個由 lpszFind指定的文字,其方向為 bNext 所指定的文字,以及 bCase指定的區分大小寫。 搜尋是透過呼叫 FindText 來完成。 如果找不到文字, 則會呼叫 OnTextNotFound

覆寫 OnReplaceSel 以變更衍生物件取代選取文字的方式 CEditView

CEditView::OnTextNotFound

覆寫此函式以變更預設實作,這會呼叫 Windows 函式 MessageBeep

virtual void OnTextNotFound(LPCTSTR lpszFind);

參數

lpszFind
要找到的文字。

CEditView::P rintInsideRect

呼叫 PrintInsideRect 以在 rectLayout指定的矩形中列印文字。

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

呼叫 SerializeRaw 使 CArchive 物件讀取或寫入 物件中的 CEditView 文字至文本檔。

void SerializeRaw(CArchive& ar);

參數

ar
CArchive儲存串行化文字的對象參考。

備註

SerializeRaw 不同於 CEditView的內部實 Serialize 作,因為它只會讀取和寫入文字,而不需要先前的物件描述數據。

CEditView::SetPrinterFont

呼叫 SetPrinterFont 以將印表機字型設定為 pFont指定的字型。

void SetPrinterFont(CFont* pFont);

參數

pFont
CFont別 物件的指標。 如果為 NULL,則用於列印的字型是以顯示字型為基礎。

備註

如果您想要讓檢視一律使用特定字型進行列印,請在類別的 函式中包含 對 SetPrinterFontOnPreparePrinting 呼叫。 列印之前會呼叫此虛擬函式,因此字型變更會在列印檢視的內容之前進行。

CEditView::SetTabStops

呼叫此函式來設定用於顯示和列印的製表位。

void SetTabStops(int nTabStops);

參數

nTabStops
每個製表位的寬度,以對話框單位為單位。

備註

僅支援單一製表位寬度。 ( CEdit 物件支援多個索引標籤寬度。)寬度是以對話框單位表示,這等於列印或顯示時所使用的字型平均字元寬度的四分之一(以大寫和小寫字母字元為基礎)。 您不應該使用 CEdit::SetTabStops ,因為 CEditView 必須快取製表位值。

此函式只會修改呼叫物件的索引標籤。 若要變更應用程式中每個 CEditView 物件的製表位,請呼叫每個物件的函 SetTabStops 式。

範例

這個代碼段會仔細測量控件所使用的字型,將控件中的製表位設定為每四個字元。

// 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 類別