다음을 통해 공유


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 디바이스 컨텍스트로 렌더링합니다. 따라서 text services 개체는 프린터에 최적화할 수 있습니다(예: 흰색인 경우 배경색을 그리지 않음). 또한 특정 화면별 요소(예: 선택 영역)는 렌더링해서는 안 됩니다.

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

함수를 계속하기 위해 전달할 매개 변수입니다.

lViewId

형식: LONG

그릴 보기를 지정합니다.

의미
TXTVIEW_ACTIVE
위치 활성 보기를 그립니다.
TXTVIEW_INACTIVE
현재 위치 보기 이외의 뷰를 그립니다. 예를 들어 인쇄 미리 보기입니다.

반환 값

형식: HRESULT

반환 값은 일반적으로 S_OK.

설명

이 메서드는 text services 개체를 렌더링합니다. 추가 lprcUpdatelViewId 매개 변수를 사용하여 OLE의 해당 IViewObject::D raw 메서드와 동일한 매개 변수를 허용합니다. 호스트가 활성 상태이거나 비활성 상태인 동안 사용할 수 있습니다.

lprcBounds 매개 변수는 렌더링할 사각형을 클라이언트 사각형이라고도 합니다. 이 사각형은 그릴 텍스트 서비스 개체의 전체 이미지 위치와 범위를 나타냅니다. hdcDraw의 논리적 좌표계로 표현됩니다. lprcBoundsNULL이면 컨트롤이 활성 상태여야 합니다. 이 경우 text services 개체는 현재 위치 활성 보기(즉, 호스트에서 TxGetClientRect 를 호출하여 가져올 수 있는 클라이언트 사각형)를 렌더링해야 합니다.

lprcUpdate 매개 변수가 NULL이 아닌 경우 hdcDraw의 논리적 좌표계에서 해당 클라이언트 사각형 내에서 업데이트할 사각형을 제공합니다. lprcUpdateNULL이면 전체 클라이언트 사각형을 그려야 합니다.

text services 개체는 클라이언트 사각형 및 TxGetExtent에서 제공하는 네이티브 크기에서 가져올 수 있는 적절한 확대/축소 인수를 사용하여 렌더링해야 합니다. 확대/축소 비율에 대한 자세한 내용은 TxGetExtent를 참조하세요.

OLE 호스트 및 ITextServices::TxDraw ( ITextServices::OnTxSetCursorITextServices::TxQueryHitPoint의 경우)에 대한 일반 설명:

OLE 호스트는 렌더링 디바이스 컨텍스트 또는 클라이언트 사각형을 사용하여 언제든지 ITextServices::TxDraw 메서드를 호출할 수 있습니다. 비활성 상태인 OLE 개체는 익스텐트만 유지합니다. 렌더링할 사각형을 가져오기 위해 호스트는 IViewObject::D raw 메서드를 호출합니다. 이 사각형은 해당 메서드의 scope 대해서만 유효합니다. 따라서 동일한 컨트롤은 화면의 다른 보기에 동시에 표시되므로 다른 사각형 및 다른 디바이스 컨텍스트에서 연속적으로 렌더링할 수 있습니다.

일반적으로 ITextServices::TxDraw 에 전달된 클라이언트 사각형 및 디바이스 컨텍스트는 캐시되지 않아야 합니다. 텍스트 서비스 개체가 모든 그리기 동안 줄을 다시 계산하여 성능을 저하시킬 수 있기 때문입니다. 대신 text services 개체는 특정 클라이언트 사각형 및 디바이스 컨텍스트(예: 줄 바꿈)에 대해 계산되는 정보를 캐시할 수 있습니다. 그러나 ITextServices::TxDraw에 대한 다음 호출에서 캐시된 정보의 유효성을 검사해야 사용되며 필요한 경우 업데이트된 정보를 다시 생성해야 합니다.

또한 컨트롤이 활성 상태일 때는 주의하세요. ITextServices::TxDraw를 호출하여 현재 위치 활성 뷰가 아닌 다른 보기를 렌더링할 수 있으므로 이 문제는 훨씬 더 복잡합니다. 즉, ITextServices::TxDraw 에 전달된 클라이언트 사각형이 활성 사각형과 같지 않을 수 있습니다( ITextServices::OnTxInPlaceActivate에 전달되고 호스트의 TxGetClientRect 를 통해 획득됨).

요구 사항

   
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 textserv.h
DLL Msftedit.dll

추가 정보

개념

DVTARGETDEVICE

ITextServices

IViewObject::Draw

OnTxInPlaceActivate

기타 리소스

RECT

RECTL

참조

TxGetClientRect

TxGetExtent

창 없는 Rich Edit 컨트롤