共用方式為


ITextServices::TxDraw 方法 (textserv.h)

繪製文字服務物件。

語法

HRESULT TxDraw(
  [in] DWORD           dwDrawAspect,
       LONG            lindex,
  [in] void            *pvAspect,
  [in] DVTARGETDEVICE  *ptd,
  [in] HDC             hdcDraw,
  [in] HDC             hicTargetDev,
  [in] LPCRECTL        lprcBounds,
  [in] LPCRECTL        lprcWBounds,
  [in] LPRECT          lprcUpdate,
       BOOL(* )(DWORD) pfnContinue,
       DWORD           dwContinue,
       LONG            lViewId
);

參數

[in] dwDrawAspect

類型: DWORD

指定要繪製的外觀,亦即,如何表示該物件。 繪製層面可以是下列其中一個值。

意義
DVASPECT_CONTENT
將文字內容的螢幕影像轉譯為 hdcDraw 裝置內容。

hicTargetDevptd參數會提供目標裝置內容的相關資訊,如果任何 (通常是印表機) 。

DVASPECT_DOCPRINT
將 物件轉譯為 hdcDraw 裝置內容,就像列印到印表機一樣。 因此,如果白色) ,文字服務物件可以針對印表機優化 (,而不是繪製背景色彩。 此外,不應該轉譯特定螢幕元素 (,例如選取範圍) 。

ITextServices::TxDraw 應該轉譯 lprcBounds 矩形,從目前的捲動位置開始。

lindex

類型: LONG

不支援。

[in] pvAspect

類型: void*

繪圖優化的資訊。

[in] ptd

類型: DVTARGETDEVICE*

目標裝置。

[in] hdcDraw

類型: HDC

轉譯裝置內容。

[in] hicTargetDev

類型: HDC

目標資訊內容。

[in] lprcBounds

類型: LPCRECTL

周框 (用戶端) 矩形。

[in] lprcWBounds

類型: LPCRECTL

中繼檔的裁剪矩形。

[in] lprcUpdate

類型: LPRECT

lprcBounds內的更新區域。

pfnContinue

類型: BOOL 回呼*

不支援。

dwContinue

類型: DWORD

要傳遞至 continue 函式的參數。

lViewId

類型: LONG

指定要繪製的檢視。

意義
TXTVIEW_ACTIVE
繪製就地使用中檢視。
TXTVIEW_INACTIVE
繪製非就地使用中檢視的檢視;例如,預覽列印。

傳回值

類型: HRESULT

傳回值通常是 S_OK

備註

這個方法會轉譯文字服務物件。 它會接受與 OLE 中對應的 IViewObject::D raw 方法相同的參數,並具有額外的 lprcUpdatelViewId 參數。 當主機就地作用中或非使用中時,可以使用它。

lprcBounds參數會提供要轉譯的矩形,也稱為用戶端矩形。 這個矩形代表要繪製之文字服務物件之整個影像的位置和範圍。 它會以 hdcDraw的邏輯座標系統表示。 如果 lprcBoundsNull ,則控制項必須是使用中。 在此情況下,文字服務物件應該呈現就地使用中檢視 (,也就是在主機上呼叫 TxGetClientRect 來取得的用戶端矩形) 。

如果 lprcUpdate 參數不是 Null,它會在 hdcDraw的邏輯座標系統中,為該用戶端矩形提供更新的矩形。 如果 lprcUpdateNull,則應該繪製整個用戶端矩形。

文字服務物件應該以適當的縮放因數呈現,可從用戶端矩形取得,以及 TxGetExtent所提供的原生大小。 如需縮放因數的討論,請參閱 TxGetExtent

OLE 主機和 ITextServices::TxDraw (ITextServices::OnTxSetCursorITextServices::TxQueryHitPoint) 的一般批註:

OLE 主機可以隨時使用任何轉譯裝置內容或用戶端矩形呼叫 ITextServices::TxDraw 方法。 非使用中的 OLE 物件只會保留範圍。 若要取得要呈現的矩形,主機會呼叫 IViewObject::D raw 方法。 這個矩形僅適用于該方法的範圍。 因此,相同的控制項可以在不同的矩形和不同的裝置內容中連續轉譯,例如,因為它同時顯示在螢幕上的不同檢視中。

通常,不應該快取傳遞至 ITextServices::TxDraw 的用戶端矩形和裝置內容,因為這會強制文字服務物件重新計算每個繪製的行,這會妨礙效能。 相反地,文字服務物件可以快取針對特定用戶端矩形和裝置內容所計算的資訊 (,例如分行符號) 。 不過,在下一次呼叫 ITextServices::TxDraw時,應該先檢查快取資訊的有效性,然後再使用,並視需要重新產生更新的資訊。

此外,當控制項就地作用中時,請特別小心。 此問題更為複雜,因為仍然可以呼叫 ITextServices::TxDraw 來轉譯其他檢視,而不是就地使用中的檢視。 換句話說,傳遞至 ITextServices::TxDraw 的用戶端矩形可能與傳遞至 ITextServices::OnTxInPlaceActivate 且透過主機上 的 TxGetClientRect 取得的作用中 (矩形不同) 。

規格需求

   
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 textserv.h
Dll Msftedit.dll

另請參閱

概念

DVTARGETDEVICE

ITextServices

IViewObject::D raw

OnTxInPlaceActivate

其他資源

矩形

RECTL

參考

TxGetClientRect

TxGetExtent

無視窗豐富編輯控制項