CRichEditView 類別
使用 CRichEditDoc 和 CRichEditCntrItem,提供 MFC 檔檢視架構內容中豐富編輯控制元件的功能。
語法
class CRichEditView : public CCtrlView
成員
公用建構函式
名稱 | 描述 |
---|---|
CRichEditView::CRichEditView | 建構 CRichEditView 物件。 |
公用方法
受保護的方法
名稱 | 描述 |
---|---|
CRichEditView::GetClipboardData | 擷取這個豐富編輯檢視中某個範圍的剪貼簿物件。 |
CRichEditView::GetContextMenu | 擷取操作功能表,以在滑鼠右鍵向下使用。 |
CRichEditView::IsSelected | 指出指定的 OLE 專案是否已選取。 |
CRichEditView::OnFindNext | 尋找下一個子字串的出現專案。 |
CRichEditView::OnInitialUpdate | 第一次附加至檔時,重新整理檢視。 |
CRichEditView::OnPasteNativeObject | 從 OLE 專案擷取原生數據。 |
CRichEditView::OnPrinterChanged | 將列印特性設定為指定的裝置。 |
CRichEditView::OnReplaceAll | 以新的字串取代指定字串的所有專案。 |
CRichEditView::OnReplaceSel | 取代目前的選取範圍。 |
CRichEditView::OnTextNotFound | 處理找不到要求文字的使用者通知。 |
CRichEditView::QueryAcceptData | 查詢,以查看 上的 IDataObject 數據。 |
CRichEditView::WrapChanged | 根據的值 m_nWordWrap 調整這個豐富編輯檢視的目標輸出裝置。 |
公用資料成員
名稱 | 描述 |
---|---|
CRichEditView::m_nBulletIndent | 指出項目符號清單的縮排量。 |
CRichEditView::m_nWordWrap | 表示自動換行條件約束。 |
備註
「豐富編輯控制項」是一個視窗,用戶可以在其中輸入和編輯文字。 文字可以指派字元和段落格式,而且可以包含內嵌的 OLE 物件。 豐富的編輯控制項提供格式化文字的程式設計介面。 然而,應用程式必須實作所有必要的使用者介面元件,讓使用者能夠執行格式化作業。
CRichEditView
會維護文字和文字的格式特性。 CRichEditDoc
會維護檢視中 OLE 用戶端項目的清單。 CRichEditCntrItem
提供 OLE 用戶端項目的存取權給容器端。
此 Windows 通用控件(因此 CRichEditCtrl 和相關類別)僅適用於在 Windows 95/98 和 Windows NT 3.51 版和更新版本下執行的程式。
如需在 MFC 應用程式中使用豐富編輯檢視的範例,請參閱 WORDPAD 範例應用程式。
繼承階層架構
CRichEditView
需求
標頭: afxrich.h
CRichEditView::AdjustDialogPosition
呼叫此函式來移動指定的對話框,使其不會遮蔽目前的選取範圍。
void AdjustDialogPosition(CDialog* pDlg);
參數
pDlg
指向 CDialog
物件的指標。
CRichEditView::CanPaste
呼叫此函式,以判斷剪貼簿是否包含可貼到這個豐富編輯檢視中的資訊。
BOOL CanPaste() const;
傳回值
如果剪貼簿包含可接受此豐富編輯檢視格式的數據,則為非零;否則為 0。
CRichEditView::CRichEditView
呼叫此函式以建立 CRichEditView
物件。
CRichEditView();
CRichEditView::D oPaste
呼叫此函式,將 OLE 專案貼到這個豐富的編輯檔/檢視中。
void DoPaste(
COleDataObject& dataobj,
CLIPFORMAT cf,
HMETAFILEPICT hMetaPict);
參數
dataobj
包含要貼上之數據的 COleDataObject。
cf
所需的剪貼簿格式。
hMetaPict
表示要貼上之專案的元檔。
備註
架構會呼叫此函式作為 QueryAcceptData 預設實作的一部分。
此函式會根據 [貼上特殊] 處理程序的結果來決定貼上的類型。 如果 cf 為 0,新專案會使用目前的圖示表示法。 如果 cf 不是零值,且 hMetaPict 不是 NULL,則新專案會使用 hMetaPict 表示法。
CRichEditView::FindText
呼叫此函式以尋找指定的文字,並將它設定為目前的選取範圍。
BOOL FindText(
LPCTSTR lpszFind,
BOOL bCase = TRUE,
BOOL bWord = TRUE,
BOOL bNext = TRUE);
參數
lpszFind
包含要搜尋的字串。
bCase
指出搜尋是否區分大小寫。
bWord
指出搜尋是否應該只比對整字,而不是單字的一部分。
bNext
指出搜尋的方向。 如果為 TRUE,則搜尋方向會接近緩衝區的結尾。 如果為 FALSE,搜尋方向會指向緩衝區的開頭。
傳回值
如果找到 lpszFind 文字,則為非零;否則為 0。
備註
此函式會在尋找作業期間顯示等候數據指標。
範例
void CMyRichEditView::OnReplaceAll(LPCTSTR lpszFind, LPCTSTR lpszReplace,
BOOL bCase, BOOL bWord)
{
CWaitCursor wait;
// no selection or different than what we are looking for
if (!FindText(lpszFind, bCase, bWord))
{
OnTextNotFound(lpszFind);
return;
}
GetRichEditCtrl().HideSelection(TRUE, FALSE);
m_nNumReplaced = 0;
do
{
GetRichEditCtrl().ReplaceSel(lpszReplace);
m_nNumReplaced++; // Record the number of replacements
} while (FindTextSimple(lpszFind));
GetRichEditCtrl().HideSelection(FALSE, FALSE);
}
CRichEditView::FindTextSimple
呼叫此函式以尋找指定的文字,並將它設定為目前的選取範圍。
BOOL FindTextSimple(
LPCTSTR lpszFind,
BOOL bCase = TRUE,
BOOL bWord = TRUE,
BOOL bNext = TRUE);
參數
lpszFind
包含要搜尋的字串。
bCase
指出搜尋是否區分大小寫。
bWord
指出搜尋是否應該只比對整字,而不是單字的一部分。
bNext
指出搜尋的方向。 如果為 TRUE,則搜尋方向會接近緩衝區的結尾。 如果為 FALSE,搜尋方向會指向緩衝區的開頭。
傳回值
如果找到 lpszFind 文字,則為非零;否則為 0。
範例
請參閱 CRichEditView::FindText 的範例。
CRichEditView::GetCharFormatSelection
呼叫此函式以取得目前選取範圍的字元格式屬性。
CHARFORMAT2& GetCharFormatSelection();
傳回值
CHARFORMAT2 結構,其中包含目前選取範圍的字元格式屬性。
備註
如需詳細資訊,請參閱 Windows SDK 中的EM_GETCHARFORMAT 訊息和 CHARFORMAT2 結構。
範例
void CMyRichEditView::OnCharUnderline()
{
CHARFORMAT2 cf;
cf = GetCharFormatSelection();
if (!(cf.dwMask & CFM_UNDERLINE) || !(cf.dwEffects & CFE_UNDERLINE))
cf.dwEffects = CFE_UNDERLINE;
else
cf.dwEffects = 0;
cf.dwMask = CFM_UNDERLINE;
SetCharFormat(cf);
}
CRichEditView::GetClipboardData
架構會將此函式呼叫為 IRichEditOleCallback::GetClipboardData 處理的一部分。
virtual HRESULT GetClipboardData(
CHARRANGE* lpchrg,
DWORD dwReco,
LPDATAOBJECT lpRichDataObj,
LPDATAOBJECT* lplpdataobj);
參數
lpchrg
CHARRANGE 結構的指標,指定要複製到 lplpdataobj 所指定之數據物件的字元範圍(和 OLE 專案)。
dwReco
剪貼簿作業旗標。 這可以是下列其中一個值。
RECO_COPY複製到剪貼簿。
RECO_CUT剪下剪貼簿。
RECO_DRAG拖曳作業(拖放)。
RECO_DROP拖放作業(拖放)。
RECO_PASTE從剪貼簿貼上。
lpRichDataObj
IDataObject 物件的指標,其中包含豐富編輯控件的剪貼簿數據(IRichEditOle::GetClipboardData)。
lplpdataobj
指標變數的指標,該變數會接收代表 lpchrg 參數中所指定範圍的 物件位址IDataObject
。 如果傳回錯誤,則會忽略 lplpdataobj 的值。
傳回值
報告作業成功的 HRESULT 值。 如需 HRESULT 的詳細資訊,請參閱 Windows SDK 中的 COM 錯誤碼 結構。
備註
如果傳回值指出成功,IRichEditOleCallback::GetClipboardData
則會傳回 IDataObject
lplpdataobj 所存取的 ,否則會傳回 lpRichDataObj 所存取的 。 覆寫此函式以提供您自己的剪貼簿數據。 此函式的預設實作會傳回E_NOTIMPL。
這是可覆寫的進階。
如需詳細資訊,請參閱 IRichEditOle::GetClipboardData、IRichEditOleCallback::GetClipboardData 和 Windows SDK 中的 CHARRANGE,以及 Windows SDK 中的 IDataObject。
CRichEditView::GetContextMenu
架構會呼叫此函式作為IRichEditOleCallback::GetContextMenu 處理的一部分。
virtual HMENU GetContextMenu(
WORD seltyp,
LPOLEOBJECT lpoleobj,
CHARRANGE* lpchrg);
參數
seltyp
選取類型。 選取類型值會在一節中說明。
lpoleobj
OLEOBJECT
如果選取範圍包含一或多個 OLE 專案,則為指定第一個選取之 OLE 對象的結構指標。 如果選取範圍不包含任何專案, 則 lpoleobj 為 NULL。 結構 OLEOBJECT
會保存 OLE 物件 v 資料表的指標。
lpchrg
包含目前選取範圍的 CHARRANGE 結構的指標。
傳回值
操作功能表的句柄。
備註
此函式是滑鼠右鍵向下處理的一般部分。
選取類型可以是下列旗標的任何組合:
SEL_EMPTY 指出沒有目前的選取範圍。
SEL_TEXT 指出目前的選取範圍包含文字。
SEL_OBJECT 指出目前的選取範圍至少包含一個 OLE 專案。
SEL_MULTICHAR 指出目前的選取範圍包含一個以上的文字字元。
SEL_MULTIOBJECT 指出目前的選取範圍包含一個以上的 OLE 物件。
默認實作會傳回 NULL。 這是可覆寫的進階。
如需詳細資訊,請參閱 Windows SDK 中的 IRichEditOleCallback::GetContextMenu 和 CHARRANGE 。
CRichEditView::GetDocument
呼叫此函式,以取得與此檢視相關聯 之 CRichEditDoc
的指標。
CRichEditDoc* GetDocument() const;
傳回值
與對象CRichEditView
相關聯的 CRichEditDoc 物件的指標。
CRichEditView::GetInPlaceActiveItem
呼叫此函式,以取得目前已在此物件中就地啟動的 CRichEditView
OLE 專案。
CRichEditCntrItem* GetInPlaceActiveItem() const;
傳回值
此豐富編輯檢視中單一就地作用 中 CRichEditCntrItem 物件的指標;如果目前沒有任何 OLE 項目處於就地作用中狀態,則為 NULL。
CRichEditView::GetMargins
呼叫此函式以擷取列印中使用的目前邊界。
CRect GetMargins() const;
傳回值
列印中使用的邊界,以MM_TWIPS為單位。
CRichEditView::GetPageRect
呼叫此函式以取得列印中使用的頁面維度。
CRect GetPageRect() const;
傳回值
列印中使用的頁面界限,以MM_TWIPS來測量。
備註
此值是以紙張大小為基礎。
CRichEditView::GetPaperSize
呼叫此函式以擷取目前的紙張大小。
CSize GetPaperSize() const;
傳回值
列印中使用的紙張大小,以MM_TWIPS為單位。
範例
void CMyRichEditView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
UNREFERENCED_PARAMETER(pInfo);
// Get the current paper size and construct an actual printing
// rectangle by leaving out one half inch margin from each side.
CSize sizePaper = GetPaperSize();
CRect rectMargins(720, 720, sizePaper.cx - 720,
sizePaper.cy - 720);
// Need to set the margins when printing from CRichEditView
SetMargins(rectMargins);
// Set up three rectangular regions spaced an inch apart
CRect rectHeader(0, 0, rectMargins.right, 1440);
CRect rectBody(0, 1440, rectMargins.right, 1440 * 2);
CRect rectFooter(0, 1440 * 2, rectMargins.right, 1440 * 3);
// Format the first 10 characters in the buffer.
int nSavedDC = pDC->SaveDC();
PrintInsideRect(pDC, rectHeader, 0, 10, TRUE); // characters 0-10
pDC->RestoreDC(nSavedDC);
// Format the second 10 characters in the buffer.
nSavedDC = pDC->SaveDC();
PrintInsideRect(pDC, rectBody, 10, 20, TRUE); // characters 10-20
pDC->RestoreDC(nSavedDC);
// Format the third 10 characters in the buffer.
nSavedDC = pDC->SaveDC();
PrintInsideRect(pDC, rectFooter, 20, 30, TRUE); // characters 20-30
pDC->RestoreDC(nSavedDC);
// CRichEditView::OnPrint(pDC, pInfo);
}
CRichEditView::GetParaFormatSelection
呼叫此函式以取得目前選取範圍的段落格式屬性。
PARAFORMAT2& GetParaFormatSelection();
傳回值
PARAFORMAT2 結構,其中包含目前選取範圍的段落格式設定屬性。
備註
如需詳細資訊,請參閱 Windows SDK 中的EM_GETPARAFORMAT 訊息和 PARAFORMAT2 結構。
CRichEditView::GetPrintRect
呼叫此函式,以擷取頁面矩形內列印區域的界限。
CRect GetPrintRect() const;
傳回值
列印中使用的影像區域界限,以MM_TWIPS為單位。
範例
void CMyRichEditView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
CRect rectPrintPage = GetPrintRect(); // Measured in MM_TWIPS
pInfo->SetMaxPage((m_nDocSizeInInches * 1440) / rectPrintPage.Height());
CRichEditView::OnBeginPrinting(pDC, pInfo);
}
CRichEditView::GetPrintWidth
呼叫此函式以判斷列印區域的寬度。
int GetPrintWidth() const;
傳回值
列印區域的寬度,以MM_TWIPS為單位。
CRichEditView::GetRichEditCtrl
呼叫此函式以擷取與 CRichEditView
對象相關聯的 CRichEditCtrl 物件。
CRichEditCtrl& GetRichEditCtrl() const;
傳回值
CRichEditCtrl
這個檢視的物件。
範例
請參閱 CRichEditView::FindText 的範例。
CRichEditView::GetSelectedItem
呼叫此函式以擷取目前在此CRichEditView
物件中選取的 OLE 專案(物件CRichEditCntrItem
)。
CRichEditCntrItem* GetSelectedItem() const;
傳回值
在對象中CRichEditView
選取之 CRichEditCntrItem 物件的指標;如果未在此檢視中選取任何專案,則為 NULL。
CRichEditView::GetTextLength
呼叫此函式以擷取這個 CRichEditView
物件中的文字長度。
long GetTextLength() const;
傳回值
這個 CRichEditView
物件中的文字長度。
CRichEditView::GetTextLengthEx
呼叫這個成員函式來計算這個 CRichEditView
物件中的文字長度。
long GetTextLengthEx(
DWORD dwFlags,
UINT uCodePage = -1) const;
參數
dwFlags
值,指定要用於判斷文字長度的方法。 這個成員可以是 Windows SDK 中所述 GETTEXTLENGTHEX 旗標成員中列出的一或多個值。
uCodePage
翻譯的代碼頁(ANSI 代碼頁的CP_ACP,Unicode 為 1200)。
傳回值
編輯控制件中的字元數或位元組數。 如果在 dwFlags 中設定不相容的旗標,這個成員函式會傳回E_INVALIDARG。
備註
GetTextLengthEx
提供判斷文字長度的其他方式。 它支援 Rich Edit 2.0 功能。 如需詳細資訊,請參閱 關於 Windows SDK 中的 Rich Edit 控制件 。
CRichEditView::InsertFileAsObject
呼叫此函式,將指定的檔案插入豐富的編輯檢視中(作為 CRichEditCntrItem 物件)。
void InsertFileAsObject(LPCTSTR lpszFileName);
參數
lpszFileName
包含要插入之檔名的字串。
CRichEditView::InsertItem
呼叫此函式,將 CRichEditCntrItem 物件插入豐富的編輯檢視中。
HRESULT InsertItem(CRichEditCntrItem* pItem);
參數
pItem
要插入之專案的指標。
傳回值
指出插入成功的 HRESULT 值。
備註
如需 HRESULT 的詳細資訊,請參閱 Windows SDK 中的 COM 錯誤碼 結構。
CRichEditView::IsRichEditFormat
呼叫此函式,以判斷 cf 是否為具有 OLE 專案的剪貼簿格式,也就是文字、RTF 或 RTF。
static BOOL AFX_CDECL IsRichEditFormat(CLIPFORMAT cf);
參數
cf
感興趣的剪貼簿格式。
傳回值
如果 cf 是豐富的編輯或文字剪貼簿格式,則為非零。
CRichEditView::IsSelected
呼叫此函式,以判斷指定的 OLE 專案目前是否在此檢視中選取。
virtual BOOL IsSelected(const CObject* pDocItem) const;
參數
pDocItem
檢視中物件的指標。
傳回值
如果選取物件,則為非零;否則為 0。
備註
如果您的衍生檢視類別有不同的方法來處理 OLE 項目的選取範圍,請覆寫此函式。
CRichEditView::m_nBulletIndent
清單中的項目符號項目的縮排;默認為 720 單位,也就是 1/2 英吋。
int m_nBulletIndent;
CRichEditView::m_nWordWrap
指出這個豐富編輯檢視的自動換行類型。
int m_nWordWrap;
備註
下列其中一個值:
WrapNone
表示沒有自動自動自動換行。WrapToWindow
會根據視窗的寬度指出自動換行。WrapToTargetDevice
根據目標裝置的特性指出自動換行。
範例
請參閱 CRichEditView::WrapChanged 的範例。
CRichEditView::OnCharEffect
呼叫此函式以切換目前選取範圍的字元格式效果。
void OnCharEffect(
DWORD dwMask,
DWORD dwEffect);
參數
dwMask
在目前選取範圍中修改的字元格式設定效果。
dwEffect
要切換之字元格式設定效果的所需清單。
備註
此函式的每個呼叫都會切換目前選取範圍的指定格式效果。
如需 dwMask 和 dwEffect 參數及其潛在值的詳細資訊,請參閱 Windows SDK 中 CHARFORMAT 的對應數據成員。
範例
void CMyRichEditView::OnItalic()
{
OnCharEffect(CFM_ITALIC, CFE_ITALIC);
}
CRichEditView::OnFindNext
從 [尋找/取代] 對話框處理命令時,由架構呼叫。
virtual void OnFindNext(
LPCTSTR lpszFind,
BOOL bNext,
BOOL bCase,
BOOL bWord);
參數
lpszFind
要尋找的字串。
bNext
搜尋的方向:TRUE 表示向下;FALSE,向上。
bCase
指出搜尋是否區分大小寫。
bWord
指出搜尋是否只比對整字。
備註
呼叫此函式以在內 CRichEditView
尋找文字。 覆寫此函式以改變衍生檢視類別的搜尋特性。
CRichEditView::OnInitialUpdate
在檢視第一次附加至文件之後,由架構呼叫,但在最初顯示檢視之前。
virtual void OnInitialUpdate();
備註
此函式的預設實作會呼叫沒有提示資訊的 CView::OnUpdate 成員函式(也就是說,針對 lHint 參數使用預設值 0,pHint 參數為 NULL)。 覆寫此函式,以執行需要文件相關信息的任何一次性初始化。 例如,如果您的應用程式有固定大小的檔,您可以使用此函式,根據檔案大小初始化檢視的捲動限制。 如果您的應用程式支援可變大小的檔案,請使用 OnUpdate
來更新每次檔案變更時的捲動限制。
範例
請參閱 CRichEditView::m_nWordWrap的範例。
CRichEditView::OnPasteNativeObject
使用此函式從內嵌專案載入原生數據。
virtual BOOL OnPasteNativeObject(LPSTORAGE lpStg);
參數
lpStg
IStorage 物件的指標。
傳回值
如果成功,則為非零;否則為 0;
備註
一般而言,您會在 周圍IStorage
建立 COleStreamFile 來執行此動作。 COleStreamFile
可以附加至封存和 CObject::Serialize,以載入數據。
這是可覆寫的進階。
如需詳細資訊,請參閱 Windows SDK 中的 IStorage 。
CRichEditView::OnParaAlign
呼叫此函式以變更所選段落的段落對齊方式。
void OnParaAlign(WORD wAlign);
參數
wAlign
所需的段落對齊方式。 下列其中一個值:
PFA_LEFT對齊段落與左邊界。
PFA_RIGHT對齊段落與右邊界。
PFA_CENTER邊界之間的段落置中。
範例
void CMyRichEditView::OnParaCenter()
{
OnParaAlign(PFA_CENTER);
}
CRichEditView::OnPrinterChanged
覆寫此函式,以在印表機變更時變更這個豐富編輯檢視的特性。
virtual void OnPrinterChanged(const CDC& dcPrinter);
參數
dcPrinter
新 印表機的 CDC 物件。
備註
默認實作會將紙張大小設定為輸出裝置的實體高度和寬度(印表機)。 如果沒有與 dcPrinter 相關聯的裝置內容,預設實作會將紙張大小設定為 8.5 x 11 英吋。
CRichEditView::OnReplaceAll
從 [取代] 對話框處理 [全部取代] 命令時,由架構呼叫。
virtual void OnReplaceAll(
LPCTSTR lpszFind,
LPCTSTR lpszReplace,
BOOL bCase,
BOOL bWord);
參數
lpszFind
要取代的文字。
lpszReplace
取代文字。
bCase
指出搜尋是否區分大小寫。
bWord
指出搜尋是否必須選取整字。
備註
呼叫此函式,以另一個字串取代某些指定文字的所有專案。 覆寫此函式以改變此檢視的搜尋特性。
範例
請參閱 CRichEditView::FindText 的範例。
CRichEditView::OnReplaceSel
從 [取代] 對話框處理 Replace 命令時,由架構呼叫。
virtual void OnReplaceSel(
LPCTSTR lpszFind,
BOOL bNext,
BOOL bCase,
BOOL bWord,
LPCTSTR lpszReplace);
參數
lpszFind
要取代的文字。
bNext
指出搜尋的方向:TRUE 是向下;FALSE,向上。
bCase
指出搜尋是否區分大小寫。
bWord
指出搜尋是否必須選取整字。
lpszReplace
取代文字。
備註
呼叫此函式,以另一個字串取代一些指定文字的出現次數。 覆寫此函式以改變此檢視的搜尋特性。
CRichEditView::OnTextNotFound
每當搜尋失敗時,架構就會呼叫。
virtual void OnTextNotFound(LPCTSTR lpszFind);
參數
lpszFind
找不到的文字。
備註
覆寫此函式以變更 MessageBeep 的輸出通知。
如需詳細資訊,請參閱 Windows SDK 中的 MessageBeep 。
範例
void CMyRichEditView::OnTextNotFound(LPCTSTR lpszFind)
{
// Replace the beep with a message box
CString str;
str.Format(_T("'%s' was not found."), lpszFind);
AfxMessageBox(str);
}
CRichEditView::OnUpdateCharEffect
架構會呼叫此函式來更新字元效果命令的命令UI。
void OnUpdateCharEffect(
CCmdUI* pCmdUI,
DWORD dwMask,
DWORD dwEffect);
參數
pCmdUI
CCmdUI 物件的指標。
dwMask
表示字元格式遮罩。
dwEffect
表示字元格式設定效果。
備註
遮罩 dwMask 會指定要檢查的字元格式設定屬性。 旗標 dwEffect 會列出要設定/清除的字元格式屬性。
如需 dwMask 和 dwEffect 參數及其潛在值的詳細資訊,請參閱 Windows SDK 中 CHARFORMAT 的對應數據成員。
範例
void CMyRichEditView::OnUpdateCharItalicUI(CCmdUI* pCmdUI)
{
OnUpdateCharEffect(pCmdUI, CFM_ITALIC, CFE_ITALIC);
}
CRichEditView::OnUpdateParaAlign
架構會呼叫此函式來更新段落效果命令的命令 UI。
void OnUpdateParaAlign(
CCmdUI* pCmdUI,
WORD wAlign);
參數
pCmdUI
CCmdUI 物件的指標。
wAlign
要檢查的段落對齊方式。 下列其中一個值:
PFA_LEFT對齊段落與左邊界。
PFA_RIGHT對齊段落與右邊界。
PFA_CENTER邊界之間的段落置中。
範例
void CMyRichEditView::OnUpdateParaCenterUI(CCmdUI* pCmdUI)
{
OnUpdateParaAlign(pCmdUI, PFA_CENTER);
}
CRichEditView::P rintInsideRect
呼叫此函式來格式化豐富編輯控件中的文字範圍,以符合 pDC 所指定裝置的 rectLayout。
long PrintInsideRect(
CDC* pDC,
RECT& rectLayout,
long nIndexStart,
long nIndexStop,
BOOL bOutput);
參數
pDC
輸出區域的裝置內容的指標。
rectLayout
定義輸出區域的 RECT 或 CRect 。
nIndexStart
要格式化之第一個字元之以零起始的索引。
nIndexStop
要格式化之最後一個字元之以零起始的索引。
bOutput
指出是否應該轉譯文字。 如果為 FALSE,則只會測量文字。
傳回值
符合輸出區域之最後一個字元的索引加上一個。
備註
一般而言,此呼叫後面接著對 CRichEditCtrl::D isplayBand 的呼叫,以產生輸出。
範例
請參閱 CRichEditView::GetPaperSize 的範例。
CRichEditView::P rintPage
呼叫此函式,以在 pDC 所指定的輸出裝置的豐富編輯控件中格式化文字範圍。
long PrintPage(
CDC* pDC,
long nIndexStart,
long nIndexStop);
參數
pDC
頁面輸出之裝置內容的指標。
nIndexStart
要格式化之第一個字元之以零起始的索引。
nIndexStop
要格式化之最後一個字元之以零起始的索引。
傳回值
符合頁面上最後一個字元的索引加上一個字元。
備註
每個頁面的配置是由 GetPageRect 和 GetPrintRect 所控制。 一般而言,此呼叫後面接著對 CRichEditCtrl::D isplayBand 的呼叫,以產生輸出。
請注意,邊界是相對於實體頁面,而不是邏輯頁面。 因此,零的邊界通常會裁剪文字,因為許多印表機在頁面上有無法列印的區域。 若要避免裁剪文字,您應該先呼叫 SetMargins 並設定合理的邊界再列印。
CRichEditView::QueryAcceptData
由架構呼叫,以將物件貼到豐富的編輯中。
virtual HRESULT QueryAcceptData(
LPDATAOBJECT lpdataobj,
CLIPFORMAT* lpcfFormat,
DWORD dwReco,
BOOL bReally,
HGLOBAL hMetaFile);
參數
lpdataobj
要查詢的 IDataObject 指標。
lpcfFormat
可接受的數據格式指標。
dwReco
未使用。
bReally
指出貼上作業是否應該繼續。
hMetaFile
用於繪製項目圖示之元檔句柄。
傳回值
報告作業成功的 HRESULT 值。
備註
覆寫此函式,以處理衍生文檔類別中 COM 專案的不同組織。 這是可覆寫的進階。
如需 HRESULT 和 IDataObject
的詳細資訊,請參閱 Windows SDK 中的 COM 錯誤碼 和 IDataObject 結構。
範例
// This code fragment is taken from the Wordpad sample.
HRESULT CMyRichEditView::QueryAcceptData(LPDATAOBJECT lpdataobj,
CLIPFORMAT* lpcfFormat, DWORD dwReco, BOOL bReally, HGLOBAL hMetaFile)
{
if (bReally && *lpcfFormat == 0 && (m_nPasteType == 0))
{
COleDataObject dataobj;
dataobj.Attach(lpdataobj, FALSE);
if (!dataobj.IsDataAvailable(cfRTO)) // native avail, let
// richedit do as it wants
{
if (dataobj.IsDataAvailable(cfEmbeddedObject))
{
if (PasteNative(lpdataobj)) // See WordPad sample for info
// on PasteNative
return S_FALSE;
}
}
}
return CRichEditView::QueryAcceptData(lpdataobj, lpcfFormat, dwReco,
bReally, hMetaFile);
}
CRichEditView::SetCharFormat
呼叫此函式來設定這個 CRichEditView
物件中新文字的字元格式設定屬性。
void SetCharFormat(CHARFORMAT2 cf);
參數
cf
CHARFORMAT2結構,其中包含新的預設字元格式設定屬性。
備註
只有 cf 成員所dwMask
指定的屬性會由此函式變更。
如需詳細資訊,請參閱 Windows SDK 中的EM_SETCHARFORMAT 訊息和 CHARFORMAT2 結構。
範例
void CMyRichEditView::OnCharUnderline()
{
CHARFORMAT2 cf;
cf = GetCharFormatSelection();
if (!(cf.dwMask & CFM_UNDERLINE) || !(cf.dwEffects & CFE_UNDERLINE))
cf.dwEffects = CFE_UNDERLINE;
else
cf.dwEffects = 0;
cf.dwMask = CFM_UNDERLINE;
SetCharFormat(cf);
}
CRichEditView::SetMargins
呼叫此函式來設定這個豐富編輯檢視的列印邊界。
void SetMargins(const CRect& rectMargin);
參數
rectMargin
列印的新邊界值,以MM_TWIPS為單位。
備註
如果 m_nWordWrap 為 WrapToTargetDevice
,您應該在使用此函式來調整列印特性之後呼叫 WrapChanged 。
請注意,PrintPage 所使用的邊界是相對於實體頁面,而不是邏輯頁面。 因此,零的邊界通常會裁剪文字,因為許多印表機在頁面上有無法列印的區域。 若要避免裁剪您的文字,您應該在列印之前呼叫 使用 SetMargins
來設定合理的印表機邊界。
範例
請參閱 CRichEditView::GetPaperSize 的範例。
CRichEditView::SetPaperSize
呼叫此函式來設定列印這個豐富編輯檢視的紙張大小。
void SetPaperSize(CSize sizePaper);
參數
sizePaper
列印的新紙張大小值,以MM_TWIPS為單位。
備註
如果 m_nWordWrap 為 WrapToTargetDevice
,您應該在使用此函式來調整列印特性之後呼叫 WrapChanged 。
範例
BOOL CMyRichEditView::OnPreparePrinting(CPrintInfo* pInfo)
{
// Set the printing margins (720 twips = 1/2 inch).
SetMargins(CRect(720, 720, 720, 720));
// Change the paper orientation to landscape mode
// See the example for CWinApp::GetPrinterDeviceDefaults
((CMyWinApp*)AfxGetApp())->SetLandscapeMode();
// Change the paper size in the CRichEditView to
// reflect landscape mode
CSize csPaper = GetPaperSize();
int temp;
temp = csPaper.cx; csPaper.cx = csPaper.cy; csPaper.cy = temp;
SetPaperSize(csPaper);
return DoPreparePrinting(pInfo);
}
CRichEditView::SetParaFormat
呼叫此函式,以設定此 CRichEditView
物件中目前選取範圍的段落格式屬性。
BOOL SetParaFormat(PARAFORMAT2& pf);
參數
pf
PARAFORMAT2結構,其中包含新的預設段落格式設定屬性。
傳回值
如果成功,則為非零;否則為 0。
備註
此函式只會變更 pf 成員所dwMask
指定的屬性。
如需詳細資訊,請參閱 Windows SDK 中的EM_SETPARAFORMAT 訊息和 PARAFORMAT2 結構。
範例
void CMyRichEditView::AddBullets()
{
PARAFORMAT2 pf;
pf.cbSize = sizeof(PARAFORMAT2);
pf.dwMask = PFM_NUMBERING | PFM_OFFSET;
pf.wNumbering = PFN_BULLET;
pf.dxOffset = 10;
VERIFY(SetParaFormat(pf));
}
CRichEditView::TextNotFound
呼叫此函式,以在呼叫 FindText 失敗之後重設 CRichEditView 控件的內部搜尋狀態。
void TextNotFound(LPCTSTR lpszFind);
參數
lpszFind
包含找不到的文字字串。
備註
建議您在呼叫 FindText 失敗之後立即呼叫這個方法,以便正確重設控件的內部搜尋狀態。
lpszFind 參數應該包含與提供給 FindText 之字串相同的內容。 重設內部搜尋狀態之後,這個方法會使用提供的搜尋字串呼叫 OnTextNotFound 方法。
範例
請參閱 CRichEditView::FindText 的範例。
CRichEditView::WrapChanged
當列印特性變更時呼叫此函式 ( SetMargins 或 SetPaperSize)。
virtual void WrapChanged();
備註
覆寫此函式以修改豐富編輯檢視回應m_nWordWrap或列印特性 (OnPrinterChanged) 變更的方式。
範例
void CMyRichEditView::OnInitialUpdate()
{
CRichEditView::OnInitialUpdate();
// Turn on the horizontal scroll bar
m_nWordWrap = WrapNone;
WrapChanged();
}
另請參閱
MFC 範例 WORDPAD
CCtrlView 類別
階層架構圖表
CRichEditDoc 類別
CRichEditCntrItem 類別