Share via


CRichEditCtrl 類別

提供 Windows Rich Edit 控制項的功能。

語法

class CRichEditCtrl : public CWnd

成員

公用建構函式

名稱 描述
CRichEditCtrl::CRichEditCtrl 建構 CRichEditCtrl 物件。

公用方法

名稱 描述
CRichEditCtrl::CanPaste 判斷剪貼簿的內容是否可以貼到這個豐富的編輯控制項中。
CRichEditCtrl::CanRedo 判斷控制項重做佇列中是否有任何動作。
CRichEditCtrl::CanUndo 判斷是否可以復原編輯作業。
CRichEditCtrl::CharFromPos 擷取與編輯控制項工作區中指定點最接近之字元的相關資訊。
CRichEditCtrl::Clear 清除目前的選取範圍。
CRichEditCtrl::Copy 將目前的選取範圍複製到剪貼簿。
CRichEditCtrl::Create 建立 Windows 豐富編輯控制項,並將它與這個 CRichEditCtrl 物件產生關聯。
CRichEditCtrl::CreateEx 使用指定的擴充 Windows 樣式建立 Windows 豐富編輯控制項,並將它與這個 CRichEditCtrl 物件產生關聯。
CRichEditCtrl::Cut 將目前的選取範圍剪下至剪貼簿。
CRichEditCtrl::DisplayBand 顯示這個 CRichEditCtrl 物件內容的一部分。
CRichEditCtrl::EmptyUndoBuffer 重設 (清除) 這個 CRichEditCtrl 物件的復原旗標。
CRichEditCtrl::FindText 找出這個 CRichEditCtrl 物件內的文字。
CRichEditCtrl::FindWordBreak 尋找指定字元位置之前或之後的下一個斷詞符號,或擷取該位置的字元相關資訊。
CRichEditCtrl::FormatRange 格式化目標輸出裝置的文字範圍。
CRichEditCtrl::GetCharPos 決定這個 CRichEditCtrl 物件中指定字元的位置。
CRichEditCtrl::GetDefaultCharFormat 擷取這個 CRichEditCtrl 物件中目前的預設字元格式屬性。
CRichEditCtrl::GetEventMask 擷取這個 CRichEditCtrl 物件的事件遮罩。
CRichEditCtrl::GetFirstVisibleLine 決定這個 CRichEditCtrl 物件中最上層可見的一行。
CRichEditCtrl::GetIRichEditOle 擷取這個豐富編輯控制項介面的 IRichEditOle 指標。
CRichEditCtrl::GetLimitText 取得使用者可以在此物件中 CRichEditCtrl 輸入的文字數量限制。
CRichEditCtrl::GetLine 從這個 CRichEditCtrl 物件擷取文字行。
CRichEditCtrl::GetLineCount 擷取這個 CRichEditCtrl 物件中的行數。
CRichEditCtrl::GetModify 判斷自上次儲存之後,這個 CRichEditCtrl 物件的內容是否已變更。
CRichEditCtrl::GetOptions 擷取豐富的編輯控制項選項。
CRichEditCtrl::GetParaFormat 擷取這個 CRichEditCtrl 物件中目前選取範圍中的段落格式屬性。
CRichEditCtrl::GetPunctuation 擷取豐富編輯控制項的目前標點符號字元。 此訊息僅適用于作業系統的亞洲語言版本。
CRichEditCtrl::GetRect 擷取這個 CRichEditCtrl 物件的格式化矩形。
CRichEditCtrl::GetRedoName 擷取控制項重做佇列中下一個動作的類型,如果有的話。
CRichEditCtrl::GetSel 取得這個 CRichEditCtrl 物件中目前選取範圍的開始和結束位置。
CRichEditCtrl::GetSelectionCharFormat 擷取這個 CRichEditCtrl 物件中目前選取範圍中的字元格式屬性。
CRichEditCtrl::GetSelectionType 擷取這個 CRichEditCtrl 物件中目前選取範圍中的內容類型。
CRichEditCtrl::GetSelText 取得這個 CRichEditCtrl 物件中目前選取範圍的文字
CRichEditCtrl::GetTextLength 擷取這個 CRichEditCtrl 物件中的文字長度,以字元為單位。 不包含終止的 Null 字元。
CRichEditCtrl::GetTextLengthEx 擷取豐富編輯檢視中的字元數或位元組數。 接受旗標清單,以指出在豐富編輯控制項中判斷文字長度的方法
CRichEditCtrl::GetTextMode 擷取豐富編輯控制項的目前文字模式和復原層級。
CRichEditCtrl::GetTextRange 擷取指定的文字範圍。
CRichEditCtrl::GetUndoName 擷取下一個復原動作的類型,如果有的話。
CRichEditCtrl::GetWordWrapMode 擷取豐富編輯控制項的目前自動換行和斷詞選項。 此訊息僅適用于作業系統的亞洲語言版本。
CRichEditCtrl::HideSelection 顯示或隱藏目前的選取範圍。
CRichEditCtrl::LimitText 限制使用者可以輸入到 物件中的 CRichEditCtrl 文字數量。
CRichEditCtrl::LineFromChar 判斷哪一行包含指定的字元。
CRichEditCtrl::LineIndex 擷取這個 CRichEditCtrl 物件中指定行的字元索引。
CRichEditCtrl::LineLength 擷取這個 CRichEditCtrl 物件中指定行的長度。
CRichEditCtrl::LineScroll 捲動這個 CRichEditCtrl 物件中的文字。
CRichEditCtrl::Paste 將剪貼簿的內容插入這個豐富的編輯控制項中。
CRichEditCtrl::PasteSpecial 以指定的資料格式,將剪貼簿的內容插入這個豐富的編輯控制項中。
CRichEditCtrl::PosFromChar 擷取編輯控制項中指定字元的工作區座標。
CRichEditCtrl::Redo 重做控制項重做佇列中的下一個動作。
CRichEditCtrl::ReplaceSel 以指定的文字取代這個 CRichEditCtrl 物件中的目前選取範圍。
CRichEditCtrl::RequestResize 強制此 CRichEditCtrl 物件傳送要求調整大小通知。
CRichEditCtrl::SetAutoURLDetect 指出自動 URL 偵測是否在豐富的編輯控制項中作用中。
CRichEditCtrl::SetBackgroundColor 設定這個 CRichEditCtrl 物件中的背景色彩。
CRichEditCtrl::SetDefaultCharFormat 設定這個 CRichEditCtrl 物件中的目前預設字元格式設定屬性。
CRichEditCtrl::SetEventMask 設定這個 CRichEditCtrl 物件的事件遮罩。
CRichEditCtrl::SetModify 設定或清除這個 CRichEditCtrl 物件的修改旗標。
CRichEditCtrl::SetOLECallback 設定這個豐富編輯控制項的 IRichEditOleCallback COM 物件。
CRichEditCtrl::SetOptions 設定這個 CRichEditCtrl 物件的選項。
CRichEditCtrl::SetParaFormat 設定此 CRichEditCtrl 物件中目前選取範圍中的段落格式設定屬性。
CRichEditCtrl::SetPunctuation 設定豐富編輯控制項的標點符號字元。 此訊息僅適用于作業系統的亞洲語言版本。
CRichEditCtrl::SetReadOnly 設定這個 CRichEditCtrl 物件的唯讀選項。
CRichEditCtrl::SetRect 設定這個 CRichEditCtrl 物件的格式化矩形。
CRichEditCtrl::SetSel 設定這個 CRichEditCtrl 物件中的選取範圍。
CRichEditCtrl::SetSelectionCharFormat 設定此 CRichEditCtrl 物件中目前選取範圍中的字元格式設定屬性。
CRichEditCtrl::SetTargetDevice 設定這個 CRichEditCtrl 物件的目標輸出裝置。
CRichEditCtrl::SetTextMode 設定豐富編輯控制項的文字模式或復原層級。 如果控制項包含文字,訊息就會失敗。
CRichEditCtrl::SetUndoLimit 設定可儲存在復原佇列中的動作數目上限。
CRichEditCtrl::SetWordCharFormat 設定這個 CRichEditCtrl 物件中目前單字中的字元格式設定屬性。
CRichEditCtrl::SetWordWrapMode 設定豐富編輯控制項的自動換行和斷詞選項。 此訊息僅適用于作業系統的亞洲語言版本。
CRichEditCtrl::StopGroupTyping 停止控制項將其他輸入動作收集到目前的復原動作。 控制項會將下一個輸入動作儲存至復原佇列中的新動作。
CRichEditCtrl::StreamIn 將輸入資料流程中的文字插入這個 CRichEditCtrl 物件。
CRichEditCtrl::StreamOut 將這個 CRichEditCtrl 物件的文字儲存到輸出資料流程中。
CRichEditCtrl::Undo 反轉上次編輯作業。

備註

「豐富編輯控制項」是一個視窗,使用者可以在其中輸入和編輯文字。 文字可以指派字元和段落格式,而且可以包含內嵌的 OLE 物件。 豐富的編輯控制項提供格式化文字的程式設計介面。 然而,應用程式必須實作所有必要的使用者介面元件,讓使用者能夠執行格式化作業。

此 Windows 通用控制項(因此類別 CRichEditCtrl )僅適用于在 Windows 95/98 和 Windows NT 3.51 版和更新版本下執行的程式。 類別 CRichEditCtrl 支援 Windows SDK 豐富編輯控制項 2.0 和 3.0 版。

警告

如果您在對話方塊中使用豐富的編輯控制項(不論您的應用程式是 SDI、MDI 還是對話方塊型),則必須在對話方塊顯示之前呼叫 AfxInitRichEdit 一次。 呼叫這個函式的一般位置是在程式的 InitInstance 成員函式中。 只需在第一次顯示對話方塊時呼叫它一次。 如果您使用 AfxInitRichEdit,不需要呼叫 CRichEditView

如需使用 CRichEditCtrl 的詳細資訊,請參閱:

如需在 MFC 應用程式中使用豐富編輯控制項的範例,請參閱 WORDPAD 範例應用程式。

繼承階層架構

CObject

CCmdTarget

CWnd

CRichEditCtrl

需求

標頭:afxcmn.h

CRichEditCtrl::CanPaste

判斷豐富的編輯控制項是否可以貼上指定的剪貼簿格式。

BOOL CanPaste(UINT nFormat = 0) const;

參數

nFormat
要查詢的剪貼簿資料格式。 這個參數可以是其中一個預先定義的剪貼簿格式或 所 RegisterClipboardFormat 傳回的值。

傳回值

如果可以貼上剪貼簿格式,則為非零;否則為 0。

備註

如果 nFormat 為 0, CanPaste 將會嘗試剪貼簿上目前的任何格式。

如需詳細資訊,請參閱 EM_CANPASTE Windows SDK 中的訊息和 RegisterClipboardFormat 函式。

範例

// Paste the clipboard data if possible.
if (m_myRichEditCtrl.CanPaste())
{
   m_myRichEditCtrl.Paste();
}

CRichEditCtrl::CanRedo

判斷重做佇列是否包含任何動作。

BOOL CanRedo() const;

傳回值

如果重做佇列包含動作,則為非零,否則為 0。

備註

若要探索重做佇列中作業的名稱,請呼叫 CRichEditCtrl::GetRedoName 。 若要重做最新的復原作業,請呼叫 Redo

如需詳細資訊,請參閱 EM_CANREDO Windows SDK 中的 。

CRichEditCtrl::CanUndo

判斷是否可以復原最後一個編輯作業。

BOOL CanUndo() const;

傳回值

如果最後一個編輯作業可由成員函式的呼叫 Undo 復原,則為非零;如果無法復原,則為 0。

備註

如需詳細資訊,請參閱 EM_CANUNDO Windows SDK 中的 。

範例

// Undo the last operation, if possible.
if (m_myRichEditCtrl.CanUndo())
   m_myRichEditCtrl.Undo();

CRichEditCtrl::CharFromPos

擷取 參數 pt 所指定之點的字元相關資訊。

int CharFromPos(CPoint pt) const;

參數

pt
CPoint物件,包含指定點的座標。

傳回值

最接近指定點之字元之以零起始的字元索引。 如果指定的點超出 控制項的最後一個字元,則傳回值會指出控制項中的最後一個字元。

備註

此成員函式適用于豐富的編輯控制項。 若要取得編輯控制項的資訊,請呼叫 CEdit::CharFromPos

如需詳細資訊,請參閱 EM_CHARFROMPOS Windows SDK 中的 。

CRichEditCtrl::Clear

刪除目前選取範圍(如果有的話)在豐富的編輯控制項中。

void Clear();

備註

藉由呼叫 Undo 成員函式,即可復原 所 Clear 執行的刪除作業。

若要刪除目前的選取範圍,並將已刪除的內容放在剪貼簿上,請呼叫 Cut 成員函式。

如需詳細資訊,請參閱 WM_CLEAR Windows SDK 中的 。

範例

// Delete all of the text.
m_myRichEditCtrl.SetSel(0, -1);
m_myRichEditCtrl.Clear();

CRichEditCtrl::Copy

將豐富編輯控制項中的目前選取範圍(如果有的話)複製到剪貼簿。

void Copy();

備註

如需詳細資訊,請參閱 WM_COPY Windows SDK 中的 。

範例

// Copy all of the text to the clipboard.
m_myRichEditCtrl.SetSel(0, -1);
m_myRichEditCtrl.Copy();

CRichEditCtrl::Create

建立 Windows 豐富編輯控制項,並將它與這個 CRichEditCtrl 物件產生關聯。

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

參數

dwStyle
指定編輯控制項的樣式。 套用下方<備註> >一節中列出的 視窗樣式組合,以及 編輯 Windows SDK 中所述的控制項樣式

rect
指定編輯控制項的大小和位置。 可以是 CRect 物件或 RECT 結構。

pParentWnd
指定編輯控制項的父視窗 (通常是 )。 CDialog 它不得為 NULL

nID
指定編輯控制項的識別碼。

傳回值

如果初始化成功,則為非零;否則為 0。

備註

您會在兩個步驟中建構 CRichEditCtrl 物件。 首先,呼叫 建 CRichEditCtrl 構函式,然後呼叫 Create ,這會建立 Windows 編輯控制項並將它附加至 CRichEditCtrl 物件。

當您使用此函式建立豐富的編輯控制項時,必須先載入必要的通用控制項程式庫。 若要載入程式庫,請呼叫全域函式 AfxInitRichEdit ,進而初始化通用控制項程式庫。 您只需要在程式中呼叫 AfxInitRichEdit 一次。

執行時 Create ,Windows 會將 WM_NCCREATEWM_NCCALCSIZEWM_CREATEWM_GETMINMAXINFO 訊息傳送至編輯控制項。

基類中的 CWndOnCreateOnNcCalcSizeOnGetMinMaxInfo 成員函式預設 OnNcCreate 會處理這些訊息。 若要擴充預設訊息處理,請從 CRichEditCtrl 衍生類別、將訊息對應新增至新類別,並覆寫上述訊息處理常式成員函式。 例如,覆寫 OnCreate ,以執行新類別所需的初始化。

將下列 視窗樣式 套用至編輯控制項。

  • WS_CHILD 總是。

  • WS_VISIBLE 通常。

  • WS_DISABLED 很少。

  • WS_GROUP 若要將控制項分組。

  • WS_TABSTOP 若要在定位順序中包含編輯控制項。

如需視窗樣式的詳細資訊,請參閱 CreateWindow Windows SDK 中的 。

範例

m_myRichEditCtrl.Create(
    WS_CHILD | WS_VISIBLE | WS_BORDER | ES_MULTILINE,
    CRect(10, 10, 100, 200), pParentWnd, IDD_RICHEDITCTRL);

CRichEditCtrl::CreateEx

建立控制項(子視窗),並將它與 CRichEditCtrl 物件產生關聯。

virtual BOOL CreateEx(
    DWORD dwExStyle,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

參數

dwExStyle
指定要建立之控制項的擴充樣式。 如需擴充 Windows 樣式的清單,請參閱 dwExStyle Windows SDK 中的 參數 CreateWindowEx

dwStyle
指定編輯控制項的樣式。 套用 Windows SDK 中所述的 Create 節中列出的 視窗樣式組合,並 編輯控制項樣式

rect
結構的參考 RECT ,描述要建立之視窗的大小和位置,在 的用戶端座標中 pParentWnd

pParentWnd
控制項父系之視窗的指標。

nID
控制項的子視窗識別碼。

傳回值

如果成功則為非零;否則為 0。

備註

使用 CreateEx 而不是 Create 套用延伸的 Windows 樣式,由 Windows 擴充樣式前置詞 WS_EX_ 所指定。

CRichEditCtrl::CRichEditCtrl

建構 CRichEditCtrl 物件。

CRichEditCtrl();

備註

使用 Create 來建構 Windows 豐富編輯控制項。

範例

// Declare a local CRichEditCtrl object.
CRichEditCtrl myRichEditCtrl;

// Declare a dynamic CRichEditCtrl object.
CRichEditCtrl* pRichEditCtrl = new CRichEditCtrl;

CRichEditCtrl::Cut

刪除目前選取範圍(如果有的話)在豐富的編輯控制項中,並將已刪除的文字複製到剪貼簿。

void Cut();

備註

藉由呼叫 Undo 成員函式,即可復原 所 Cut 執行的刪除作業。

若要刪除目前的選取範圍,而不將已刪除的文字放入剪貼簿中,請呼叫 Clear 成員函式。

如需詳細資訊,請參閱 WM_CUT Windows SDK 中的 。

範例

// Delete all of the text and copy it to the clipboard.
m_myRichEditCtrl.SetSel(0, -1);
m_myRichEditCtrl.Cut();

CRichEditCtrl::DisplayBand

顯示 RTF 控制項內容的一部分(文字和 OLE 專案),如先前的格式。 FormatRange

BOOL DisplayBand(LPRECT pDisplayRect);

參數

pDisplayRect
RECTCRect 物件的指標,指定要顯示文字之裝置的區域。

傳回值

如果格式化文字的顯示成功,則為非零,否則為 0。

備註

文字和 OLE 專案會裁剪到指標 pDisplayRect 所指定的區域。

如需詳細資訊,請參閱 EM_DISPLAYBAND Windows SDK 中的 。

範例

請參閱 的 CRichEditCtrl::FormatRange 範例。

CRichEditCtrl::EmptyUndoBuffer

重設這個豐富編輯控制項的復原旗標(清除)。

void EmptyUndoBuffer();

備註

控制項現在將無法復原最後一個編輯作業。 每當可以復原豐富編輯控制項內的作業時,就會設定復原旗標。

每當您呼叫 CWnd 成員函 SetWindowText 式 時,就會自動清除復原旗標。

如需詳細資訊,請參閱 EM_EMPTYUNDOBUFFER Windows SDK 中的 。

範例

// Clear the undo buffer.
if (m_myRichEditCtrl.CanUndo())
{
   m_myRichEditCtrl.EmptyUndoBuffer();
   ASSERT(!m_myRichEditCtrl.CanUndo());
}

CRichEditCtrl::FindText

在豐富的編輯控制項中尋找文字。

long FindText(
    DWORD dwFlags,
    FINDTEXTEX* pFindText) const;

參數

dwFlags
如需可能值的清單,請參閱 wParamEM_FINDTEXTEXT Windows SDK 中的 。

pFindText
結構的 FINDTEXTEX 指標,提供搜尋的參數,並傳回找到相符專案的範圍。

傳回值

下一個比對以零起始的字元位置;- 1 如果沒有相符專案,則為 1。

備註

您可以在 結構內的 FINDTEXTEX 結構中 CHARRANGE 設定適當的範圍參數,以向上或向下搜尋。

如需詳細資訊,請參閱 EM_FINDTEXTEX Windows SDK 中的訊息和 FINDTEXTEX 結構。

範例

// Set the selection to be the first occurrence of the
// string lpszmyString, if it is found.
FINDTEXTEX ft;
ft.chrg.cpMin = 0;
ft.chrg.cpMax = 50;
ft.lpstrText = _T("wallaby");
long n = m_myRichEditCtrl.FindText(FR_MATCHCASE | FR_WHOLEWORD, &ft);
if (n != -1)
   m_myRichEditCtrl.SetSel(ft.chrgText);

CRichEditCtrl::FindWordBreak

尋找 所 nStart 指定位置之前或之後的下一個斷詞符號。

DWORD FindWordBreak(
    UINT nCode,
    DWORD nStart) const;

參數

nCode
表示要採取的動作。 如需可能值的清單,請參閱 Windows SDK 中 EM_FINDWORDBREAK 參數 code 的描述。

nStart
要從中開始之以零起始的字元位置。

傳回值

根據 參數 nCode 。 如需詳細資訊,請參閱 EM_FINDWORDBREAK Windows SDK 中的 。

備註

您可以使用這個成員函式來擷取指定位置上字元的相關資訊。

CRichEditCtrl::FormatRange

將特定裝置的豐富編輯控制項中的文字範圍格式化。

long FormatRange(
    FORMATRANGE* pfr,
    BOOL bDisplay = TRUE);

參數

pfr
FORMATRANGE結構的指標,其中包含輸出裝置的相關資訊。 NULL 表示可以釋放豐富編輯控制項內的快取資訊。

bDisplay
指出是否應該轉譯文字。 如果 FALSE 為 ,則只會測量文字。

傳回值

符合區域之最後一個字元的索引加上一個。

備註

一般而言,此呼叫後面接著呼叫 DisplayBand

如需詳細資訊,請參閱 EM_FORMATRANGE Windows SDK 中的訊息和 FORMATRANGE 結構。

範例

// First obtain a pointer to a printer DC.
CPageSetupDialog psDlg;
if (IDOK == psDlg.DoModal())
{
   CDC *pMyPrinterDC = CDC::FromHandle(psDlg.CreatePrinterDC());

   FORMATRANGE fr;

   // Get the page width and height from the printer.
   long lPageWidth = ::MulDiv(pMyPrinterDC->GetDeviceCaps(PHYSICALWIDTH),
                              1440, pMyPrinterDC->GetDeviceCaps(LOGPIXELSX));
   long lPageHeight = ::MulDiv(pMyPrinterDC->GetDeviceCaps(PHYSICALHEIGHT),
                               1440, pMyPrinterDC->GetDeviceCaps(LOGPIXELSY));
   CRect rcPage(0, 0, lPageWidth, lPageHeight);

   // Format the text and render it to the printer.
   fr.hdc = pMyPrinterDC->m_hDC;
   fr.hdcTarget = pMyPrinterDC->m_hDC;
   fr.rc = rcPage;
   fr.rcPage = rcPage;
   fr.chrg.cpMin = 0;
   fr.chrg.cpMax = -1;
   m_myRichEditCtrl.FormatRange(&fr, TRUE);

   // Update the display with the new formatting.
   RECT rcClient;
   m_myRichEditCtrl.GetClientRect(&rcClient);
   m_myRichEditCtrl.DisplayBand(&rcClient);

   pMyPrinterDC->DeleteDC();
}

CRichEditCtrl::GetCharPos

取得這個 CRichEditCtrl 物件內指定字元的位置(左上角)。

CPoint GetCharPos(long lChar) const;

參數

lChar
以零起始的字元索引。

傳回值

所指定 lChar 字元左上角的位置。

備註

字元是藉由提供其以零起始的索引值來指定。 如果 lChar 大於這個 CRichEditCtrl 物件中最後一個字元的索引,則傳回值會指定字元位置的座標,而剛超過這個 CRichEditCtrl 物件中的最後一個字元。

如需詳細資訊,請參閱 EM_POSFROMCHAR Windows SDK 中的 。

CRichEditCtrl::GetDefaultCharFormat

取得這個 CRichEditCtrl 物件的預設字元格式屬性。

DWORD GetDefaultCharFormat(CHARFORMAT& cf) const;  DWORD GetDefaultCharFormat(CHARFORMAT2& cf) const;

參數

cf
在第一個 CHARFORMAT 版本中,結構指標會持有預設字元格式屬性。

在第二個 CHARFORMAT2 版本中,結構的指標,這是結構的 Rich Edit 2.0 延伸模組 CHARFORMAT ,並包含預設字元格式設定屬性。

傳回值

dwMask的資料成員 cf 。 它指定了預設字元格式屬性。

備註

如需詳細資訊,請參閱 EM_GETCHARFORMAT Windows SDK 中的訊息和 CHARFORMATCHARFORMAT2 結構。

範例

請參閱 的 SetDefaultCharFormat 範例。

CRichEditCtrl::GetEventMask

取得這個 CRichEditCtrl 物件的事件遮罩。

long GetEventMask() const;

傳回值

這個 CRichEditCtrl 物件的事件遮罩。

備註

事件遮罩會指定物件傳送至其父視窗的通知訊息 CRichEditCtrl

如需詳細資訊,請參閱 EM_GETEVENTMASK Windows SDK 中的 。

範例

請參閱 的 CRichEditCtrl::SetEventMask 範例。

CRichEditCtrl::GetFirstVisibleLine

決定這個 CRichEditCtrl 物件中最上層可見的一行。

int GetFirstVisibleLine() const;

傳回值

這個 CRichEditCtrl 物件中最上層可見行的以零起始的索引。

備註

如需詳細資訊,請參閱 EM_GETFIRSTVISIBLELINE Windows SDK 中的 。

範例

int nFirstVisible = m_myRichEditCtrl.GetFirstVisibleLine();

// Scroll the rich edit control so that the first visible line
// is the first line of text.
if (nFirstVisible > 0)
{
   m_myRichEditCtrl.LineScroll(-nFirstVisible, 0);
}

CRichEditCtrl::GetIRichEditOle

IRichEditOle存取這個 CRichEditCtrl 物件的介面。

IRichEditOle* GetIRichEditOle() const;

傳回值

介面的 IRichEditOle 指標,這個介面可用來存取此 CRichEditCtrl 物件的 OLE 功能; NULL 如果無法存取介面,則為 。

備註

使用此介面來存取此 CRichEditCtrl 物件的 OLE 功能。

如需詳細資訊,請參閱 EM_GETOLEINTERFACE Windows SDK 中的訊息和 IRichEditOle 介面。

CRichEditCtrl::GetLimitText

取得這個 CRichEditCtrl 物件的文字限制。

long GetLimitText() const;

傳回值

這個 CRichEditCtrl 物件的目前文字限制,以位元組為單位。

備註

文字限制是文字數量上限,以位元組為單位,豐富的編輯控制項可以接受。

如需詳細資訊,請參閱 EM_GETLIMITTEXT Windows SDK 中的 。

範例

// The new text of the rich edit control.
LPCTSTR lpszmyString = _T("Here's some text in our rich edit control!");
long nLength = (long)_tcslen(lpszmyString);

// Want the text limit to be at least the size of the new string.
if (m_myRichEditCtrl.GetLimitText() < nLength)
   m_myRichEditCtrl.LimitText(nLength);

m_myRichEditCtrl.SetWindowText(lpszmyString);

CRichEditCtrl::GetLine

從這個 CRichEditCtrl 物件擷取文字行。

int GetLine(
    int nIndex,
    LPTSTR lpszBuffer) const;

int GetLine(
    int nIndex,
    LPTSTR lpszBuffer,
    int nMaxLength) const;

參數

nIndex
要擷取之行的以零起始的索引。

lpszBuffer
指向要接收文字的緩衝區。 緩衝區的第一個字必須指定可以複製到緩衝區的最大位元組數目。

nMaxLength
可以複製到 lpszBuffer 的最大字元數。 第二種形式 GetLine 會將此值放入 所 lpszBuffer 指定緩衝區的第一個字中。

傳回值

複製到 lpszBuffer 的字元數。

備註

複製的行不包含終止的 Null 字元。

注意

由於緩衝區的第一個字會儲存要複製的字元數,因此請確定您的緩衝區長度至少為 4 個位元組。

如需詳細資訊,請參閱 EM_GETLINE Windows SDK 中的 。

範例

請參閱 的 GetLineCount 範例。

CRichEditCtrl::GetLineCount

擷取 物件中的 CRichEditCtrl 行數。

int GetLineCount() const;

傳回值

這個 CRichEditCtrl 物件中的行數。

備註

如需詳細資訊,請參閱 EM_GETLINECOUNT Windows SDK 中的 。

範例

int nLineLength, nLineIndex, nLineCount = m_myRichEditCtrl.GetLineCount();
CString strText, strLine;

// Dump every line of text of the rich edit control.
for (int i = 0; i < nLineCount; i++)
{
   nLineIndex = m_myRichEditCtrl.LineIndex(i);
   nLineLength = m_myRichEditCtrl.LineLength(nLineIndex);
   m_myRichEditCtrl.GetLine(i, strText.GetBufferSetLength(nLineLength + 1),
                            nLineLength);
   strText.SetAt(nLineLength, _T('\0')); // null terminate
   strText.ReleaseBuffer(nLineLength + 1);

   TRACE(_T("line %d: '%s'\r\n"), i, strText);
}

CRichEditCtrl::GetModify

判斷此 CRichEditCtrl 物件的內容是否已修改。

BOOL GetModify() const;

傳回值

如果此 CRichEditCtrl 物件中的文字已修改,則為非零,否則為 0。

備註

Windows 會維護內部旗標,指出豐富編輯控制項的內容是否已變更。 第一次建立編輯控制項時,會清除此旗標,也可以藉由呼叫 SetModify 成員函式來清除。

如需詳細資訊,請參閱 EM_GETMODIFY Windows SDK 中的 。

範例

// Reset the modified state only if the text has been modified.
if (m_myRichEditCtrl.GetModify())
   m_myRichEditCtrl.SetModify(FALSE);

CRichEditCtrl::GetOptions

擷取目前為豐富編輯控制項設定的選項。

UINT GetOptions() const;

傳回值

目前選項旗標值的組合。 如需這些值的清單,請參閱 fOptions 訊息中的 EM_SETOPTIONS 參數,如 Windows SDK 中所述。

CRichEditCtrl::GetParaFormat

取得目前選取範圍的段落格式設定屬性。

DWORD GetParaFormat(PARAFORMAT& pf) const;  DWORD GetParaFormat(PARAFORMAT2& pf) const;

參數

pf
在第一個 PARAFORMAT 版本中,結構指標,用來保存目前選取範圍的段落格式設定屬性。

在第二個 PARAFORMAT2 版本中,結構的指標,這是結構的 Rich Edit 2.0 延伸模組 PARAFORMAT ,並包含預設字元格式設定屬性。

傳回值

dwMask的資料成員 pf 。 它會指定目前選取範圍中一致的段落格式設定屬性。

備註

如果選取多個段落, pf 則會收到第一個選取段落的屬性。 傳回值會指定整個選取範圍中的屬性一致。

如需詳細資訊,請參閱 EM_GETPARAFORMAT Windows SDK 中的訊息和 PARAFORMATPARAFORMAT2 結構。

範例

請參閱 的 CRichEditCtrl::SetParaFormat 範例。

CRichEditCtrl::GetPunctuation

取得豐富編輯控制項中的目前標點符號字元。

BOOL GetPunctuation(
    UINT fType,
    PUNCTUATION* lpPunc) const;

參數

fType
標點符號類型旗標,如 Windows SDK 中的 參數 EM_GETPUNCTUATION 中所述 fType

lpPunc
結構的指標 PUNCTUATION ,如 Windows SDK 中所述。

傳回值

如果作業成功,則為非零,否則為 0。

備註

此成員函式僅適用于作業系統的亞洲語言版本。

CRichEditCtrl::GetRect

擷取這個 CRichEditCtrl 物件的格式化矩形。

void GetRect(LPRECT lpRect) const;

參數

lpRect
CRect 或 的指標 RECT ,用來接收這個 CRichEditCtrl 物件的格式化矩形。

備註

格式化矩形是文字的周框。 這個值與物件的大小 CRichEditCtrl 無關。

如需詳細資訊,請參閱 EM_GETRECT Windows SDK 中的 。

範例

請參閱 的 LimitText 範例。

CRichEditCtrl::GetRedoName

擷取重做佇列中下一個可用動作的類型,如果有的話。

UNDONAMEID GetRedoName() const;

傳回值

如果成功, GetRedoName 會傳 UNDONAMEID 回列舉型別,指出控制項重做佇列中下一個動作的類型。 如果重做佇列是空的,或佇列中的重做動作是未知的類型, GetRedoName 則傳回 0。

備註

可以復原或取消復原的動作類型包括輸入、刪除、拖放、剪下和貼上作業。 這項資訊對於為復原和重做作業提供擴充使用者介面的應用程式很有用,例如可重做動作的下拉式清單方塊。

CRichEditCtrl::GetSel

擷取這個 CRichEditCtrl 物件中目前選取範圍的界限。

void GetSel(CHARRANGE& cr) const;

void GetSel(
    long& nStartChar,
    long& nEndChar) const;

參數

cr
CHARRANGE要接收目前選取範圍之結構的參考。

nStartChar
目前選取範圍中第一個字元之以零起始的索引。

nEndChar
目前選取範圍中最後一個字元之以零起始的索引。

備註

此函式的兩種形式提供替代方式來取得選取範圍的界限。 這些表單的簡短描述如下:

  • GetSel( cr 此表單會 CHARRANGE 使用 結構 cpMin 及其 和 cpMax 成員來傳回界限。

  • GetSel( nStartCharnEndChar 此表單會傳回參數 nStartCharnEndChar 中的界限。

如果開頭 (或 nStartChar ) 為 0,而結尾 ( cpMincpMaxnEndChar ) 為 - 1,則選取範圍會包含所有專案。

如需詳細資訊,請參閱 EM_EXGETSEL Windows SDK 中的訊息和 CHARRANGE 結構。

範例

// Set the selection to be all characters after the current selection.
long nStartChar, nEndChar;

m_myRichEditCtrl.GetSel(nStartChar, nEndChar);
m_myRichEditCtrl.SetSel(nEndChar, -1);

CRichEditCtrl::GetSelectionCharFormat

取得目前選取範圍的字元格式屬性。

DWORD GetSelectionCharFormat(CHARFORMAT& cf) const;  DWORD GetSelectionCharFormat(CHARFORMAT2& cf) const;

參數

cf
在第一個 CHARFORMAT 版本中,結構的指標,用來接收目前選取範圍的字元格式屬性。

在第二個 CHARFORMAT2 版本中,結構的指標,這是結構的 Rich Edit 2.0 延伸模組 CHARFORMAT ,以接收目前選取範圍的字元格式屬性。

傳回值

dwMask的資料成員 cf 。 它會指定目前選取範圍中一致的字元格式屬性。

備註

參數 cf 會接收目前選取範圍中第一個字元的屬性。 傳回值會指定整個選取範圍中的屬性一致。

如需詳細資訊,請參閱 EM_GETCHARFORMAT Windows SDK 中的訊息和 CHARFORMATCHARFORMAT2 結構。

範例

請參閱 的 SetSelectionCharFormat 範例。

CRichEditCtrl::GetSelectionType

決定這個 CRichEditCtrl 物件中的選取類型。

WORD GetSelectionType() const;

傳回值

指出目前選取範圍內容的旗標。 下列旗標的組合:

  • SEL_EMPTY 表示沒有目前的選取範圍。

  • SEL_TEXT 表示目前的選取範圍包含文字。

  • SEL_OBJECT 表示目前的選取範圍至少包含一個 OLE 專案。

  • SEL_MULTICHAR 表示目前的選取範圍包含一個字元以上的文字。

  • SEL_MULTIOBJECT 表示目前的選取範圍包含一個以上的 OLE 物件。

備註

如需詳細資訊,請參閱 EM_SELECTIONTYPE Windows SDK 中的 。

範例

// Dump the selection text only if it contains at least one text character.
if (m_myRichEditCtrl.GetSelectionType() & (SEL_TEXT | SEL_MULTICHAR))
{
   CString strText = m_myRichEditCtrl.GetSelText();

   TRACE(_T("selection text is '%s'.\r\n"), strText);
}

CRichEditCtrl::GetSelText

從這個 CRichEditCtrl 物件中的目前選取範圍擷取文字。

long GetSelText(LPSTR lpBuf) const;  CString GetSelText() const;

參數

lpBuf
要接收目前選取範圍中文字之緩衝區的指標。

傳回值

取決於表單:

  • GetSelText(lpBuf) 複製到 lpBuf 的字元數,不包括 Null 終止。

  • GetSelText( ) 包含目前選取範圍的字串。

備註

如果您使用第一個表單, GetSelText(lpBuf) 您必須確定緩衝區夠大,才能接收的文字。 呼叫 GetSel 以判斷目前選取範圍中的字元數。

如需詳細資訊,請參閱 EM_GETSELTEXT Windows SDK 中的 。

範例

請參閱 的 CRichEditCtrl::GetSelectionType 範例。

CRichEditCtrl::GetTextLength

擷取此 CRichEditCtrl 物件中文字的長度,以字元為單位,不包含終止的 Null 字元。

long GetTextLength() const;

傳回值

這個 CRichEditCtrl 物件中的文字長度。

備註

如需詳細資訊,請參閱 WM_GETTEXTLENGTH Windows SDK 中的 。

範例

// Limit the rich edit controls text to the number of
// characters currently in it.
m_myRichEditCtrl.LimitText(m_myRichEditCtrl.GetTextLength());

CRichEditCtrl::GetTextLengthEx

計算 RTF 控制項中文字的長度。

long GetTextLengthEx(
    DWORD dwFlags,
    UINT uCodePage = -1) const;

參數

dwFlags
值,指定要用於判斷文字長度的方法。 這個成員可以是 Windows SDK 中所述之 旗標成員 GETTEXTLENGTHEX 中所列的一或多個值。

uCodePage
翻譯的字碼頁( CP_ACP 適用于 ANSI 字碼頁,Unicode 為 1200)。

傳回值

編輯控制項中的字元數或位元組數。 如果在 中 dwFlags 設定不相容的旗標,這個成員函式會傳 E_INVALIDARG 回 。

備註

GetTextLengthEx 提供判斷文字長度的其他方式。 它支援 Rich Edit 2.0 功能。 如需詳細資訊,請參閱 Windows SDK 中的關於 Rich Edit 控制項

CRichEditCtrl::GetTextMode

擷取豐富編輯控制項的目前文字模式和復原層級。

UINT GetTextMode() const;

傳回值

列舉 TEXTMODE 類型的一組位旗標,如 Windows SDK 中所述。 旗標表示控制項目前的文字模式和復原層級。

CRichEditCtrl::GetTextRange

取得指定的字元範圍。

int GetTextRange(
    int nFirst,
    int nLast,
    CString& refString) const;

參數

nFirst
字元位置索引緊接在範圍中的第一個字元前面。

nLast
緊接在範圍中最後一個字元後面的字元位置。

refString
將接收文字之 物件的參考 CString

傳回值

複製的字元數,不包括終止的 Null 字元。

備註

如需詳細資訊,請參閱 EM_GETTEXTRANGE Windows SDK 中的 。

GetTextRange 支援 Rich Edit 2.0 功能。 如需詳細資訊,請參閱 Windows SDK 中的關於 Rich Edit 控制項

CRichEditCtrl::GetUndoName

擷取復原佇列中下一個可用動作的類型,如果有的話。

UNDONAMEID GetUndoName() const;

傳回值

如果復原動作位於控制項的復原佇列中,會 傳回 UNDONAMEID 列舉類型, GetUndoName 指出佇列中下一個動作的類型。 如果復原佇列是空的,或佇列中的復原動作為未知類型, GetUndoName 則傳回 0。

備註

可以復原或取消復原的動作類型包括輸入、刪除、拖放、剪下和貼上作業。 這項資訊對於為復原和重做作業提供擴充使用者介面的應用程式很有用,例如可以復原的動作下拉式清單方塊。

CRichEditCtrl::GetWordWrapMode

擷取豐富編輯控制項的目前自動換行和斷詞選項。

UINT GetWordWrapMode() const;

傳回值

目前的自動換行和斷詞選項。 這些選項會在 Windows SDK 中 EM_SETWORDWRAPMODE 說明。

備註

此成員函式僅適用于作業系統的亞洲語言版本。

CRichEditCtrl::HideSelection

變更選取範圍的可見度。

void HideSelection(
    BOOL bHide,
    BOOL bPerm);

參數

bHide
指出是否應該顯示或隱藏選取範圍, TRUE 以隱藏選取範圍。

bPerm
指出選取範圍的可見度變更是否應該是永久性的。

備註

當 為 TRUEbPerm ,它會變更 ECO_NOHIDESEL 這個 CRichEditCtrl 物件的 選項。 如需此選項的簡短描述,請參閱 SetOptions 。 您可以使用此函式來設定此 CRichEditCtrl 物件的所有選項。

如需詳細資訊,請參閱 EM_HIDESELECTION Windows SDK 中的 。

範例

// Show the selection and make it permanent.
m_myRichEditCtrl.HideSelection(FALSE, TRUE);

CRichEditCtrl::LimitText

限制使用者可以進入編輯控制項的文字長度。

void LimitText(long nChars = 0);

參數

nChars
指定使用者可以輸入之文字的長度(以位元組為單位)。 如果此參數為 0(預設值),則文字長度會設定為 64K 位元組。

備註

變更文字限制只會限制使用者可以輸入的文字。 它不會影響任何已經在編輯控制項中的文字,也不會影響 中成員 CWnd 函式複製到編輯控制項 SetWindowText 的文字長度。 如果應用程式使用 函 SetWindowText 式將比 呼叫 LimitText 中指定的更多的文字放入編輯控制項,則使用者可以刪除編輯控制項內的任何文字。 不過,除非刪除目前的選取範圍會導致文字低於文字限制,否則文字限制會防止使用者以新的文字取代現有的文字。

注意

對於文字限制,每個 OLE 專案都會計算為單一字元。

如需詳細資訊,請參閱 EM_EXLIMITTEXT Windows SDK 中的 。

範例

// Limit the number of characters to be the maximum number visible.

// Get the text metrics for the edit; needed for the
// average character width.
TEXTMETRIC tm;
CDC *pDC = m_myRichEditCtrl.GetDC();
pDC->GetTextMetrics(&tm);
m_myRichEditCtrl.ReleaseDC(pDC);

CRect r;
m_myRichEditCtrl.GetRect(&r);
m_myRichEditCtrl.LimitText(r.Width() / tm.tmAveCharWidth);

CRichEditCtrl::LineFromChar

擷取包含指定字元索引的行號。

long LineFromChar(long nIndex) const;

參數

nIndex
包含編輯控制項文字中所需字元之以零起始的索引值,或包含 -1。 如果 nIndex 為 -1,它會指定目前行,也就是包含插入號的行。

傳回值

包含 所 nIndex 指定字元索引之行的以零起始的行號。 如果 nIndex 為 -1,則會傳回包含選取範圍第一個字元的行號。 如果沒有選取專案,則會傳回目前的行號。

備註

字元索引是豐富編輯控制項開頭的字元數。 針對字元計數,OLE 專案會計算為單一字元。

如需詳細資訊,請參閱 EM_EXLINEFROMCHAR Windows SDK 中的 。

範例

// The index of the char to get information on.
int nIndex = 11;

CString strText;

m_myRichEditCtrl.GetWindowText(strText);
strText = strText.Mid(nIndex, 1);

// Dump the index, character and line number.
TRACE(_T("nIndex = %d, character = %c, line = %d\r\n"),
      nIndex, strText[0], m_myRichEditCtrl.LineFromChar(nIndex));

CRichEditCtrl::LineIndex

擷取這個 CRichEditCtrl 物件內行的字元索引。

int LineIndex(int nLine = -1) const;

參數

nLine
包含編輯控制項文字中所需行的索引值,或包含 -1。 如果 nLine 為 -1,它會指定目前行,也就是包含插入號的行。

傳回值

如果指定的行號大於編輯控制項中的行數,則為 或 -1 所指定 nLine 行的字元索引。

備註

字元索引是從豐富編輯控制項開頭到指定行的字元數。

如需詳細資訊,請參閱 EM_LINEINDEX Windows SDK 中的 。

範例

// The string for replacing.
LPCTSTR lpszmyString = _T("Hello, I'm the new second line.");

int nBegin, nEnd, nIndex;

// Replace the second line, if it exists, of the rich edit control
// with the text lpszmyString.
nIndex = m_myRichEditCtrl.LineIndex(1);
if ((nBegin = nIndex) != -1)
{
   nEnd = nBegin + m_myRichEditCtrl.LineLength(nIndex);
   m_myRichEditCtrl.SetSel(nBegin, nEnd);
   m_myRichEditCtrl.ReplaceSel(lpszmyString);
}

CRichEditCtrl::LineLength

擷取豐富編輯控制項中線條的長度。

int LineLength(int nLine = -1) const;

參數

nLine
指定要擷取其長度的行中字元的字元索引。 如果此參數為 -1,則會傳回目前行的長度(包含插入號的行),不包含該行內任何選取文字的長度。 針對單行編輯控制項呼叫 時 LineLength ,會忽略此參數。

傳回值

當針對多行編輯控制項呼叫 時 LineLength ,傳回值是 所 nLine 指定行的長度 (in TCHAR ) 。 它不包含行尾的歸位字元。 當針對單行編輯控制項呼叫 時 LineLength ,傳回值是編輯控制項中文字的長度 (in TCHAR ) 。 如果 nLine 大於 控制項中的字元數,則傳回值為零。

備註

LineIndex使用成員函式來擷取這個 CRichEditCtrl 物件內指定行號的字元索引。

如需詳細資訊,請參閱 EM_LINELENGTH Windows SDK 中的 。

範例

請參閱 的 LineIndex 範例。

CRichEditCtrl::LineScroll

捲動多行編輯控制項的文字。

void LineScroll(
    int nLines,
    int nChars = 0);

參數

nLines
指定要垂直捲動的行數。

nChars
指定要水準捲動的字元位置數目。 如果豐富的編輯控制項具有 或 ES_CENTER 樣式, ES_RIGHT 則會忽略此值。 編輯樣式 是在 中 Create 指定。

備註

編輯控制項不會垂直捲動到編輯控制項中的最後一行文字。 如果目前的行加上 所 nLines 指定的行數超過編輯控制項中的行總數,則會調整值,讓編輯控制項的最後一行捲動到編輯控制項視窗頂端。

LineScroll 可以用來水準捲動超過任何一行的最後一個字元。

如需詳細資訊,請參閱 EM_LINESCROLL Windows SDK 中的 。

範例

請參閱 的 GetFirstVisibleLine 範例。

CRichEditCtrl::Paste

將資料從剪貼簿 CRichEditCtrl 插入插入點的 插入點,插入號的位置。

void Paste();

備註

只有在剪貼簿包含已辨識格式的資料時,才會插入資料。

如需詳細資訊,請參閱 WM_PASTE Windows SDK 中的 。

範例

// Replace all of the text with the text in the clipboard.
m_myRichEditCtrl.SetSel(0, -1);
m_myRichEditCtrl.Paste();

CRichEditCtrl::PasteSpecial

將特定剪貼簿格式的資料貼到這個 CRichEditCtrl 物件中。

void PasteSpecial(
    UINT nClipFormat,
    DWORD dvAspect = 0,
    HMETAFILE hMF = 0);

參數

nClipFormat
要貼到這個 CRichEditCtrl 物件的剪貼簿格式。

dvAspect
要從剪貼簿擷取之資料的裝置層面。

hMF
包含要貼上之物件之圖示檢視的中繼檔控制碼。

備註

新材質會插入插入點,插入點的位置。

如需詳細資訊,請參閱 EM_PASTESPECIAL Windows SDK 中的 。

範例

// Paste the data from the clipboard as text.
m_myRichEditCtrl.PasteSpecial(CF_TEXT);

CRichEditCtrl::PosFromChar

擷取編輯控制項中指定字元的工作區座標。

CPoint PosFromChar(UINT nChar) const;

參數

nChar
字元以零起始的索引。

傳回值

字元的位置(x,y)。 對於單行編輯控制項,Y 座標一律為零。

備註

如需詳細資訊,請參閱 EM_POSFROMCHAR Windows SDK 中的 。

CRichEditCtrl::Redo

重做控制項重做佇列中的下一個動作。

BOOL Redo();

傳回值

如果成功,則為非零;否則為 0。

備註

如需詳細資訊,請參閱 EM_REDO Windows SDK 中的 。

CRichEditCtrl::ReplaceSel

以指定的文字取代這個 CRichEditCtrl 物件中的目前選取範圍。

void ReplaceSel(
    LPCTSTR lpszNewText,
    BOOL bCanUndo = FALSE);

參數

lpszNewText
包含取代文字之 Null 終止字串的指標。

bCanUndo
若要指定此函式可以復原,請將此參數的值設定為 TRUE 。 預設值是 FALSE

備註

若要取代這個 CRichEditCtrl 物件中的所有文字,請使用 CWnd::SetWindowText

如果沒有目前的選取範圍,則會在插入點插入取代文字,也就是目前的插入號位置。

此函式會將插入的文字格式化為現有的字元格式。 取代整個文字範圍時(在呼叫 ReplaceSel 之前呼叫 SetSel (0,-1), 有一個段落字元的結尾會保留前一段的格式,而新插入的文字會繼承。

如需詳細資訊,請參閱 EM_REPLACESEL Windows SDK 中的 。

範例

請參閱 的 LineIndex 範例。

CRichEditCtrl::RequestResize

強制此 CRichEditCtrl 物件將通知訊息傳送 EN_REQUESTRESIZE 至其父視窗。

void RequestResize();

備註

此函式在處理無 CRichEditCtrl 底物件時 CWnd::OnSize 很有用。

如需詳細資訊,請參閱 EM_REQUESTRESIZE Windows SDK 中關於 Rich Edit Controls 的 訊息和 無底豐富編輯控制項 一節。

CRichEditCtrl::SetAutoURLDetect

設定豐富的編輯控制項,以自動偵測 URL。

BOOL SetAutoURLDetect(BOOL bEnable = TRUE);

參數

bEnable
指定控制項是否設定為自動偵測 URL。 如果 TRUE 為 ,則會啟用它。 如果 FALSE 為 ,則會停用。

傳回值

如果成功,則為零,否則為非零。 例如,訊息可能會因為記憶體不足而失敗。

備註

如果啟用,RTF 編輯控制項會掃描文字,以判斷它是否符合標準 URL 格式。 如需這些 URL 格式的清單,請參閱 EM_AUTOURLDETECT Windows SDK。

注意

如果您的編輯控制項對 URL 以外的文字使用效果, CFE_LINK 請勿設定 SetAutoURLDetectTRUE 為 。 SetAutoURLDetect 會啟用 URL 的這個效果,並針對所有其他文字停用它。 如需效果的詳細資訊 CFE_LINK ,請參閱 EN_LINK

CRichEditCtrl::SetBackgroundColor

設定這個 CRichEditCtrl 物件的背景色彩。

COLORREF SetBackgroundColor(
    BOOL bSysColor,
    COLORREF cr);

參數

bSysColor
指出背景色彩是否應該設定為系統值。 如果此值為 TRUEcr 則會忽略。

cr
要求的背景色彩。 只有在 是 FALSE 時才 bSysColor 使用 。

傳回值

這個 CRichEditCtrl 物件的上一個背景色彩。

備註

背景色彩可以設定為系統值或指定的 COLORREF 值。

如需詳細資訊,請參閱 EM_SETBKGNDCOLOR Windows SDK 中的訊息和 COLORREF 結構。

範例

// Use red as the background color.
m_myRichEditCtrl.SetBackgroundColor(FALSE, RGB(255, 0, 0));

CRichEditCtrl::SetDefaultCharFormat

設定這個 CRichEditCtrl 物件中新文字的字元格式設定屬性。

BOOL SetDefaultCharFormat(CHARFORMAT& cf);
BOOL SetDefaultCharFormat(CHARFORMAT2& cf);

參數

cf
在第一個版本中,結構指標 CHARFORMAT ,其中包含新的預設字元格式屬性。

在第二個 CHARFORMAT2 版本中,結構的指標,這是結構的 Rich Edit 2.0 延伸模組 CHARFORMAT ,其中包含預設字元格式屬性。

傳回值

如果成功,則為非零;否則為 0。

備註

此函式只會變更 成員所 dwMaskcf 指定的屬性。

如需詳細資訊,請參閱 EM_SETCHARFORMAT Windows SDK 中的訊息和 CHARFORMATCHARFORMAT2 結構。

範例

CHARFORMAT cf = {0};

// Modify the default character format so that all new
// text is striked out and not bold.
cf.cbSize = sizeof(cf);
cf.dwMask = CFM_STRIKEOUT | CFM_BOLD;
cf.dwEffects = CFE_STRIKEOUT;
m_myRichEditCtrl.SetDefaultCharFormat(cf);

// Verify the settings are what is expected.
m_myRichEditCtrl.GetDefaultCharFormat(cf);
ASSERT((cf.dwMask & (CFM_STRIKEOUT | CFM_BOLD)) ==
       (CFM_STRIKEOUT | CFM_BOLD));
ASSERT((cf.dwEffects & (CFE_STRIKEOUT | CFE_BOLD)) == CFE_STRIKEOUT);

CRichEditCtrl::SetEventMask

設定這個 CRichEditCtrl 物件的事件遮罩。

DWORD SetEventMask(DWORD dwEventMask);

參數

dwEventMask
這個 CRichEditCtrl 物件的新事件遮罩。

傳回值

上一個事件遮罩。

備註

事件遮罩會指定物件傳送至其父視窗的通知訊息 CRichEditCtrl

如需詳細資訊,請參閱 EM_SETEVENTMASK Windows SDK 中的 。

範例

// Set the event mask so that the parent gets notified when the text
// of the rich edit control changes.
m_myRichEditCtrl.SetEventMask(m_myRichEditCtrl.GetEventMask() |
                              ENM_CHANGE);

CRichEditCtrl::SetModify

設定或清除編輯控制項的修改旗標。

void SetModify(BOOL bModified = TRUE);

參數

bModified
的值 TRUE 表示文字已修改,而 的值 FALSE 表示其未修改。 根據預設,會設定修改的旗標。

備註

修改過的旗標會指出編輯控制項內的文字是否已修改。 每當使用者變更文字時,系統就會自動設定它。 其值可以使用成員函式來 GetModify 擷取。

如需詳細資訊,請參閱 EM_SETMODIFY Windows SDK 中的 。

範例

請參閱 的 GetModify 範例。

CRichEditCtrl::SetOLECallback

為這個 CRichEditCtrl 物件提供 IRichEditOleCallback 物件,以用來存取 OLE 相關資源和資訊。

BOOL SetOLECallback(IRichEditOleCallback* pCallback);

參數

pCallback
IRichEditOleCallback這個 CRichEditCtrl 物件將用來取得 OLE 相關資源和資訊的物件指標。

傳回值

如果成功,則為非零;否則為 0。

備註

這個 CRichEditCtrl 物件會呼叫 IUnknown::AddRef ,以遞增 所 pCallback 指定 COM 物件的使用量計數。

如需詳細資訊,請參閱 EM_SETOLECALLBACK Windows SDK 中的訊息和 IRichEditOleCallback 介面。

CRichEditCtrl::SetOptions

設定這個 CRichEditCtrl 物件的選項。

void SetOptions(
    WORD wOp,
    DWORD dwFlags);

參數

wOp
表示作業的類型。 下列其中一個值:

  • ECOOP_SET 將選項設定為 所 dwFlags 指定的選項。

  • ECOOP_OR 將目前的選項與 所 dwFlags 指定的選項結合在一起。

  • ECOOP_AND 只保留也由 所 dwFlags 指定的目前選項。

  • ECOOP_XOR 以邏輯方式排除 OR 目前的選項,其中包含 所 dwFlags 指定的選項。

dwFlags
豐富的編輯選項。 旗標值列在一節中。

備註

選項可以是下列值的組合:

  • ECO_AUTOWORDSELECTION 按兩下時自動選取單字。

  • ECO_AUTOVSCROLL 當使用者在行尾輸入字元時,自動將文字向右捲動 10 個字元。 當使用者按下 ENTER 鍵時,控制項會將所有文字捲動回零位置。

  • ECO_AUTOHSCROLL 當使用者按下最後一行的 ENTER 鍵時,自動向上捲動一頁文字。

  • ECO_NOHIDESEL 否定編輯控制項的預設行為。 當控制項失去輸入焦點時,預設行為會隱藏選取範圍,並在控制項收到輸入焦點時顯示選取範圍。 如果您指定 ECO_NOHIDESEL ,則選取的文字會反轉,即使控制項沒有焦點也一樣。

  • ECO_READONLY 防止使用者在編輯控制項中輸入或編輯文字。

  • ECO_WANTRETURN 指定當使用者在對話方塊中將文字輸入多行豐富編輯控制項時按下 ENTER 鍵時,插入歸位字元。 如果您未指定此樣式,按下 ENTER 鍵會將命令傳送至豐富的編輯控制項父視窗,以模擬按一下父視窗的預設按鈕(例如對話方塊中的 [確定] 按鈕)。 此樣式不會影響單行編輯控制項。

  • ECO_SAVESEL 當控制項失去焦點時,會保留選取範圍。 根據預設,當控制項重新取得焦點時,會選取控制項的整個內容。

  • ECO_VERTICAL 以垂直方向繪製文字和物件。 僅適用于亞洲語言。

如需詳細資訊,請參閱 EM_SETOPTIONS Windows SDK 中的 。

範例

// Add auto horizontal and vertical scrolling.
m_myRichEditCtrl.SetOptions(ECOOP_OR, ECO_AUTOVSCROLL |
                                          ECO_AUTOHSCROLL);

CRichEditCtrl::SetParaFormat

設定此 CRichEditCtrl 物件中目前選取範圍的段落格式設定屬性。

BOOL SetParaFormat(PARAFORMAT& pf);
BOOL SetParaFormat(PARAFORMAT2& pf);

參數

pf
在第一個版本中,結構指標 PARAFORMAT ,其中包含新的預設段落格式屬性。

在第二個 PARAFORMAT2 版本中,結構的指標,這是結構的 Rich Edit 2.0 延伸模組 PARAFORMAT ,並包含預設字元格式設定屬性。

傳回值

如果成功,則為非零;否則為 0。

備註

此函式只會變更 成員所 dwMaskpf 指定的屬性。

如需詳細資訊,請參閱 EM_SETPARAFORMAT Windows SDK 中的訊息和 PARAFORMATPARAFORMAT2 結構。

範例

PARAFORMAT pf;

// Modify the paragraph format so that the text is centered.
pf.cbSize = sizeof(PARAFORMAT);
pf.dwMask = PFM_ALIGNMENT;
pf.wAlignment = PFA_CENTER;
m_myRichEditCtrl.SetParaFormat(pf);

// Verify the settings are what is expected.
m_myRichEditCtrl.GetParaFormat(pf);
ASSERT(pf.dwMask &PFM_ALIGNMENT);
ASSERT(pf.wAlignment == PFA_CENTER);

CRichEditCtrl::SetPunctuation

設定豐富編輯控制項中的標點符號。

BOOL SetPunctuation(
    UINT fType,
    PUNCTUATION* lpPunc);

參數

fType
標點符號旗標。 如需可能值的清單,請參閱 fType Windows SDK 中的 參數 EM_SETPUNCTUATION

lpPunc
結構的指標 PUNCTUATION ,如 Windows SDK 中所述。

傳回值

如果成功,則為非零,否則為 0。

備註

此成員函式僅適用于作業系統的亞洲語言版本。

CRichEditCtrl::SetReadOnly

ECO_READONLY變更這個 CRichEditCtrl 物件的選項。

BOOL SetReadOnly(BOOL bReadOnly = TRUE);

參數

bReadOnly
指出這個 CRichEditCtrl 物件是否應該唯讀。

傳回值

如果成功,則為非零;否則為 0。

備註

如需此選項的簡短描述,請參閱 SetOptions 。 您可以使用此函式來設定此 CRichEditCtrl 物件的所有選項。

如需詳細資訊,請參閱 EM_SETREADONLY Windows SDK 中的 。

範例

// Set the rich edit control to be read-only.
m_myRichEditCtrl.SetReadOnly(TRUE);
ASSERT(m_myRichEditCtrl.GetStyle() & ES_READONLY);

CRichEditCtrl::SetRect

設定這個 CRichEditCtrl 物件的格式化矩形。

void SetRect(LPCRECT lpRect);

參數

lpRect
CRect 或 的 RECT 指標,表示格式化矩形的新界限。

備註

格式化矩形是文字的限制矩形。 限制矩形與豐富編輯控制項視窗的大小無關。 第一次建立這個 CRichEditCtrl 物件時,格式化矩形的大小與視窗的工作區相同。 用來 SetRect 讓格式化矩形大於或小於豐富的編輯視窗。

如需詳細資訊,請參閱 EM_SETRECT Windows SDK 中的 。

範例

CRect r;

m_myRichEditCtrl.GetRect(&r);

// Reduce the formatting rect of the rich edit control by
// 10 pixels on each side.
if ((r.Width() > 20) && (r.Height() > 20))
{
   r.DeflateRect(0, 20);
   m_myRichEditCtrl.SetRect(&r);
}

CRichEditCtrl::SetSel

設定此 CRichEditCtrl 物件內的選取範圍。

void SetSel(
    long nStartChar,
    long nEndChar);

void SetSel(CHARRANGE& cr);

參數

nStartChar
選取範圍之第一個字元之以零起始的索引。

nEndChar
選取範圍最後一個字元之以零起始的索引。

cr
CHARRANGE 結構,保留目前選取範圍的界限。

備註

此函式的兩種形式提供替代方式來設定選取範圍的界限。 這些表單的簡短描述如下:

  • SetSel( cr 此表單會 CHARRANGE 使用 結構 cpMin 及其 和 cpMax 成員來設定界限。

  • SetSel( nStartCharnEndChar 此表單會使用參數 nStartChar nEndChar 來設定界限。

插入號會放在選取範圍結尾,此選取範圍是由開頭(或 nStartChar ) 和結尾( cpMincpMaxnEndChar ) 索引的較大範圍所表示。 此函式會捲動 的內容 CRichEditCtrl ,讓插入號可見。

若要選取此 CRichEditCtrl 物件中的所有文字,請呼叫 SetSel 開頭索引為 0,結尾索引為 - 1。

如需詳細資訊,請參閱 EM_EXSETSEL Windows SDK 中的訊息和 CHARRANGE 結構。

範例

請參閱 的 GetSel 範例。

CRichEditCtrl::SetSelectionCharFormat

設定此 CRichEditCtrl 物件中目前選取範圍中文字的字元格式設定屬性。

BOOL SetSelectionCharFormat(CHARFORMAT& cf);
BOOL SetSelectionCharFormat(CHARFORMAT2& cf);

參數

cf
在第一個版本中,結構指標 CHARFORMAT ,其中包含目前選取範圍的新字元格式屬性。

在第二個 CHARFORMAT2 版本中,結構的指標,這是結構的 Rich Edit 2.0 延伸模組 CHARFORMAT ,其中包含目前選取範圍的新字元格式屬性。

傳回值

如果成功,則為非零;否則為 0。

備註

只有 cf 成員 dwMask 指定的屬性會由此函式變更。

如需詳細資訊,請參閱 EM_SETCHARFORMAT Windows SDK 中的 和 CHARFORMATCHARFORMAT2 結構。

範例

CHARFORMAT cf;

// Modify the selection format so that the selected text is
// displayed in bold and not striked out.
cf.cbSize = sizeof(cf);
cf.dwMask = CFM_STRIKEOUT | CFM_BOLD;
cf.dwEffects = CFE_BOLD;
m_myRichEditCtrl.SetSelectionCharFormat(cf);

// Verify the settings are what is expected.
m_myRichEditCtrl.GetSelectionCharFormat(cf);
ASSERT((cf.dwMask & (CFM_STRIKEOUT | CFM_BOLD)) ==
       (CFM_STRIKEOUT | CFM_BOLD));
ASSERT((cf.dwEffects & (CFE_STRIKEOUT | CFE_BOLD)) == CFE_BOLD);

CRichEditCtrl::SetTargetDevice

設定用於 WYSIWYG 的目標裝置和線條寬度(您所看到的內容)格式設定此 CRichEditCtrl 物件。

BOOL SetTargetDevice(
    HDC hDC,
    long lLineWidth);

BOOL SetTargetDevice(
    CDC& dc,
    long lLineWidth);

參數

hDC
處理新目標裝置的裝置內容。

lLineWidth
要用於格式化的線條寬度。

dc
CDC 用於新的目標裝置。

傳回值

如果成功,則為非零;否則為 0。

備註

如果此函式成功,豐富編輯控制項會擁有傳遞為參數的裝置內容。 在此情況下,呼叫函式不應終結裝置內容。

如需詳細資訊,請參閱 EM_SETTARGETDEVICE Windows SDK 中的 。

範例

// First obtain a pointer to a printer DC.
CPageSetupDialog psDlg;
if (IDOK == psDlg.DoModal())
{
   CDC *pMyPrinterDC = CDC::FromHandle(psDlg.CreatePrinterDC());

   // Get line width information from the printer.
   long lLineWidth = ::MulDiv(pMyPrinterDC->GetDeviceCaps(PHYSICALWIDTH),
                              1440, pMyPrinterDC->GetDeviceCaps(LOGPIXELSX));

   // Set the printer as the target device.
   m_myRichEditCtrl.SetTargetDevice(*pMyPrinterDC, lLineWidth);

   pMyPrinterDC->DeleteDC();
}

CRichEditCtrl::SetTextMode

設定豐富編輯控制項的文字模式或復原和重做層級。

BOOL SetTextMode(UINT fMode);

參數

fMode
指定控制項文字模式和復原層級參數的新設定。 如需可能值的清單,請參閱 Windows SDK 中的 mode 參數 EM_SETTEXTMODE

傳回值

如果成功,則為零,否則為非零。

備註

如需文字模式的描述,請參閱 EM_SETTEXTMODE Windows SDK。

如果控制項包含文字,則此成員函式會失敗。 若要確定控制項是空的,請使用空字串傳送 WM_SETTEXT 訊息。

CRichEditCtrl::SetUndoLimit

設定可儲存在復原佇列中的動作數目上限。

UINT SetUndoLimit(UINT nLimit);

參數

nLimit
指定可儲存在復原佇列中的動作數目上限。 設定為零以停用復原。

傳回值

豐富編輯控制項的新復原動作數目上限。

備註

根據預設,復原佇列中的動作數目上限為 100。 如果您增加這個數位,則必須有足夠的可用記憶體來容納新的數位。 為了提升效能,請將限制設定為最小的可能值。

CRichEditCtrl::SetWordCharFormat

設定此 CRichEditCtrl 物件中目前選取之單字的字元格式設定屬性。

BOOL SetWordCharFormat(CHARFORMAT& cf);
BOOL SetWordCharFormat(CHARFORMAT2& cf);

參數

cf
在第一個 CHARFORMAT 版本中,結構指標,其中包含目前選取之單字的新字元格式屬性。

在第二個 CHARFORMAT2 版本中,結構的指標,這是結構的 Rich Edit 2.0 延伸模組 CHARFORMAT ,其中包含目前選取之單字的新字元格式屬性。

傳回值

如果成功,則為非零;否則為 0。

備註

此函式只會變更 成員所 dwMaskcf 指定的屬性。

如需詳細資訊,請參閱 EM_SETCHARFORMAT Windows SDK 中的訊息和 CHARFORMATCHARFORMAT2 結構。

範例

CHARFORMAT cf;

// Modify the word format so that the selected word is
// displayed in bold and not striked out.
cf.cbSize = sizeof(cf);
cf.dwMask = CFM_STRIKEOUT | CFM_BOLD;
cf.dwEffects = CFE_BOLD;
m_myRichEditCtrl.SetWordCharFormat(cf);

CRichEditCtrl::SetWordWrapMode

設定豐富編輯控制項的自動換行和斷詞選項。

UINT SetWordWrapMode(UINT uFlags) const;

參數

uFlags
用於自動換行和斷詞的選項。 如需可能選項的清單,請參閱 EM_SETWORDWRAPMODE Windows SDK 中的 。

傳回值

目前的自動換行和斷詞選項。

備註

此訊息僅適用于作業系統的亞洲語言版本。

CRichEditCtrl::StopGroupTyping

停止控制項將其他輸入動作收集到目前的復原動作。

void StopGroupTyping();

備註

控制項會將下一個輸入動作儲存至復原佇列中的新動作。

如需詳細資訊,請參閱 EM_STOPGROUPTYPING Windows SDK 中的 。

CRichEditCtrl::StreamIn

將這個 CRichEditCtrl 物件中的文字取代為來自指定輸入資料流程的文字。

long StreamIn(
    int nFormat,
    EDITSTREAM& es);

參數

nFormat
指定輸入資料格式的旗標。 如需詳細資訊,請參閱<備註>一節。

es
EDITSTREAM 結構,指定輸入資料流程。 如需詳細資訊,請參閱<備註>一節。

傳回值

從輸入資料流程讀取的字元數。

備註

的值 nFormat 必須是下列其中一項:

  • SF_TEXT 表示唯讀取文字。

  • SF_RTF 表示讀取文字和格式設定。

這其中一個值可以與 SFF_SELECTION 結合。 如果 SFF_SELECTION 指定了 , StreamIn 請將目前的選取範圍取代為輸入資料流程的內容。 如果未指定,則會 StreamIn 取代這個 CRichEditCtrl 物件的整個內容。

在 參數 esEDITSTREAM ,您可以指定回呼函式,以文字填滿緩衝區。 重複呼叫此回呼函式,直到輸入資料流程用盡為止。

如需詳細資訊,請參閱 EM_STREAMIN Windows SDK 中的訊息和 EDITSTREAM 結構。

範例

// My callback procedure that reads the rich edit control contents
// from a file.
static DWORD CALLBACK 
MyStreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
   CFile* pFile = (CFile*) dwCookie;

   *pcb = pFile->Read(pbBuff, cb);

   return 0;
}

 

// The example code.

// The file from which to load the contents of the rich edit control.
CFile cFile(TEXT("My_RichEdit_InFile.rtf"), CFile::modeRead);
EDITSTREAM es;

es.dwCookie = (DWORD)&cFile;
es.pfnCallback = MyStreamInCallback;
m_myRichEditCtrl.StreamIn(SF_RTF, es);

CRichEditCtrl::StreamOut

將這個 CRichEditCtrl 物件的內容寫出至指定的輸出資料流程。

long StreamOut(
    int nFormat,
    EDITSTREAM& es);

參數

nFormat
指定輸出資料格式的旗標。 如需詳細資訊,請參閱<備註>一節。

es
EDITSTREAM 結構,指定輸出資料流程。 如需詳細資訊,請參閱<備註>一節。

傳回值

寫入至輸出資料流程的字元數。

備註

的值 nFormat 必須是下列其中一項:

  • SF_TEXT 表示只寫入文字。

  • SF_RTF 表示寫入文字和格式設定。

  • SF_RTFNOOBJS 表示寫入文字和格式設定,並以空格取代 OLE 專案。

  • SF_TEXTIZED 表示使用 OLE 專案的文字標記法撰寫文字和格式設定。

這些值中的任何一個都可以與 SFF_SELECTION 結合。 如果 SFF_SELECTION 指定了 , StreamOut 則會將目前的選取範圍寫出至輸出資料流程。 如果未指定, StreamOut 請寫出這個 CRichEditCtrl 物件的整個內容。

在 參數 esEDITSTREAM ,您可以指定回呼函式,以文字填滿緩衝區。 重複呼叫此回呼函式,直到輸出資料流程用盡為止。

如需詳細資訊,請參閱 EM_STREAMOUT Windows SDK 中的訊息和 EDITSTREAM 結構。

範例

// My callback procedure that writes the rich edit control contents
// to a file.
static DWORD CALLBACK 
MyStreamOutCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
   CFile* pFile = (CFile*) dwCookie;

   pFile->Write(pbBuff, cb);
   *pcb = cb;

   return 0;
}

 

// The example code.

// The file to store the contents of the rich edit control.
CFile cFile(TEXT("My_RichEdit_OutFile.rtf"),
            CFile::modeCreate | CFile::modeWrite);
EDITSTREAM es;

es.dwCookie = (DWORD)&cFile;
es.pfnCallback = MyStreamOutCallback;
m_myRichEditCtrl.StreamOut(SF_RTF, es);

CRichEditCtrl::Undo

復原豐富編輯控制項中的最後一個作業。

BOOL Undo();

傳回值

如果復原作業成功,則為非零;否則為 0。

備註

復原作業也可以復原。 例如,您可以使用第一次呼叫 Undo 來還原已刪除的文字。 只要沒有介入的編輯作業,您就可以再次移除文字,並再次呼叫 Undo

如需詳細資訊,請參閱 EM_UNDO Windows SDK 中的 。

範例

請參閱 的 CanUndo 範例。

另請參閱

MFC 範例 WORDPAD
CWnd
階層架構圖表
CEdit
CRichEditView