다음을 통해 공유


IViewObjectExImpl 클래스

이 클래스는 IUnknown IViewObject, IViewObject2 및 IViewObjectEx 인터페이스의 기본 구현을 구현하고 제공합니다.

Important

이 클래스와 해당 멤버는 Windows 런타임에서 실행되는 애플리케이션에서 사용할 수 없습니다.

구문

template<class T>
class ATL_NO_VTABLE IViewObjectExImpl
   : public IViewObjectEx

매개 변수

T
에서 파생된 IViewObjectExImpl클래스입니다.

멤버

공용 메서드

이름 설명
IViewObjectExImpl::D raw 디바이스 컨텍스트에 컨트롤의 표현을 그립니다.
IViewObjectExImpl::Freeze 컨트롤이 그려질 때까지 변경되지 않도록 컨트롤의 그리기 표현을 고정합니다 Unfreeze. ATL 구현은 E_NOTIMPL 반환합니다.
IViewObjectExImpl::GetAdvise 컨트롤에 있는 경우 기존 권고 싱크 연결을 검색합니다.
IViewObjectExImpl::GetColorSet 그리기 위해 컨트롤에서 사용하는 논리 팔레트를 반환합니다. ATL 구현은 E_NOTIMPL 반환합니다.
IViewObjectExImpl::GetExtent 컨트롤 클래스 데이터 멤버 CComControlBase::m_sizeExtent HIMETRIC 단위(단위당 0.01mm)로 컨트롤의 표시 크기를 검색합니다.
IViewObjectExImpl::GetNaturalExtent 사용자가 크기를 조정할 때 사용할 개체에 대한 컨테이너의 크기 조정 힌트를 제공합니다.
IViewObjectExImpl::GetRect 요청된 그리기 측면을 설명하는 사각형을 반환합니다. ATL 구현은 E_NOTIMPL 반환합니다.
IViewObjectExImpl::GetViewStatus 개체의 불투명도 및 지원되는 그리기 측면에 대한 정보를 반환합니다.
IViewObjectExImpl::QueryHitPoint 지정한 점이 지정된 사각형에 있는지 확인하고 HITRESULT 값을 pHitResult반환합니다.
IViewObjectExImpl::QueryHitRect 컨트롤의 표시 사각형이 지정된 위치 사각형의 점과 겹치고 HITRESULT 값을 pHitResult반환하는지 여부를 확인합니다.
IViewObjectExImpl::SetAdvise 컨트롤 뷰의 변경 내용에 대해 싱크에 알림을 받을 수 있도록 컨트롤과 조언 싱크 간의 연결을 설정합니다.
IViewObjectExImpl::Unfreeze 컨트롤의 그리기 표현의 고정을 해제합니다. ATL 구현은 E_NOTIMPL 반환합니다.

설명

IViewObject, IViewObject2IViewObjectEx 인터페이스를 사용하면 컨트롤이 직접 자신을 표시하고 컨트롤 디스플레이의 변경 내용을 컨테이너에 알리는 조언 싱크를 만들고 관리할 수 있습니다. 인터페이스는 IViewObjectEx 깜박임 없는 그리기, 직사각형이 아닌 투명 컨트롤 및 적중 테스트(예: 컨트롤에서 마우스 클릭을 고려해야 하는 정도)와 같은 확장된 컨트롤 기능을 지원합니다. 클래스 IViewObjectExImpl 는 디버그 빌드의 덤프 디바이스에 정보를 전송하여 이러한 인터페이스 및 구현 IUnknown 의 기본 구현을 제공합니다.

상속 계층 구조

IViewObjectEx

IViewObjectExImpl

요구 사항

헤더: atlctl.h

IViewObjectExImpl::D raw

디바이스 컨텍스트에 컨트롤의 표현을 그립니다.

STDMETHOD(Draw)(
    DWORD dwDrawAspect,
    LONG lindex,
    void* pvAspect,
    DVTARGETDEVICE* ptd,
    HDC hicTargetDev,
    LPCRECTL prcBounds,
    LPCRECTL prcWBounds,
    BOOL(_stdcall* /* pfnContinue*/) (DWORD_PTR dwContinue),
    DWORD_PTR /* dwContinue */);

설명

이 메서드는 다시 컨트롤 클래스의 OnDraw 메서드를 호출하는 호출 CComControl::OnDrawAdvanced 합니다. OnDraw ATL 컨트롤 마법사를 사용하여 컨트롤을 만들 때 메서드가 컨트롤 클래스에 자동으로 추가됩니다. 마법사의 기본값 OnDraw 은 "ATL 3.0" 레이블이 있는 사각형을 그립니다.

Windows SDK에서 IViewObject::D raw를 참조하세요.

IViewObjectExImpl::Freeze

컨트롤이 그려질 때까지 변경되지 않도록 컨트롤의 그리기 표현을 고정합니다 Unfreeze. ATL 구현은 E_NOTIMPL 반환합니다.

STDMETHOD(Freeze)(
    DWORD /* dwAspect */,
    LONG /* lindex */,
    void* /* pvAspect */,
    DWORD* /* pdwFreeze */);

설명

Windows SDK에서 IViewObject::Freeze를 참조하세요.

IViewObjectExImpl::GetAdvise

컨트롤에 있는 경우 기존 권고 싱크 연결을 검색합니다.

STDMETHOD(GetAdvise)(
    DWORD* /* pAspects */,
    DWORD* /* pAdvf */,
    IAdviseSink** /* ppAdvSink */);

설명

권고 싱크는 컨트롤 클래스 데이터 멤버 CComControlBase::m_spAdviseSink 저장됩니다.

Windows SDK에서 IViewObject::GetAdvise를 참조하세요.

IViewObjectExImpl::GetColorSet

그리기 위해 컨트롤에서 사용하는 논리 팔레트를 반환합니다. ATL 구현은 E_NOTIMPL 반환합니다.

STDMETHOD(GetColorSet)(
    DWORD /* dwAspect */,
    LONG /* lindex */,
    void* /* pvAspect */,
    DVTARGETDEVICE* /* ptd */,
    HDC /* hicTargetDevice */,
    LOGPALETTE** /* ppColorSet */);

설명

Windows SDK에서 IViewObject::GetColorSet을 참조하세요.

IViewObjectExImpl::GetExtent

컨트롤 클래스 데이터 멤버 CComControlBase::m_sizeExtent HIMETRIC 단위(단위당 0.01mm)로 컨트롤의 표시 크기를 검색합니다.

STDMETHOD(GetExtent)(
    DWORD /* dwDrawAspect */,
    LONG /* lindex */,
    DVTARGETDEVICE* /* ptd */,
    LPSIZEL* lpsizel);

설명

Windows SDK에서 IViewObject2::GetExtent를 참조하세요.

IViewObjectExImpl::GetNaturalExtent

사용자가 크기를 조정할 때 사용할 개체에 대한 컨테이너의 크기 조정 힌트를 제공합니다.

STDMETHOD(GetNaturalExtent)(
    DWORD dwAspect,
    LONG /* lindex */,
    DVTARGETDEVICE* /* ptd */,
    HDC /* hicTargetDevice */,
    DVEXTENTINFO* pExtentInfo,
    LPSIZEL psizel);

설명

DVASPECT_CONTENT pExtentInfo-dwExtentMode>가 DVEXTENT_CONTENT 경우 dwAspect * psizel 를 컨트롤 클래스의 데이터 멤버 CComControlBase::m_sizeNatural 설정합니다. 그렇지 않으면 오류 HRESULT를 반환합니다.

Windows SDK에서 IViewObjectEx::GetNaturalExtent를 참조하세요.

IViewObjectExImpl::GetRect

요청된 그리기 측면을 설명하는 사각형을 반환합니다. ATL 구현은 E_NOTIMPL 반환합니다.

STDMETHOD(GetRect)(DWORD /* dwAspect */, LPRECTL /* pRect */);

설명

Windows SDK에서 IViewObjectEx::GetRect를 참조하세요.

IViewObjectExImpl::GetViewStatus

개체의 불투명도 및 지원되는 그리기 측면에 대한 정보를 반환합니다.

STDMETHOD(GetViewStatus)(DWORD* pdwStatus);

설명

기본적으로 ATL은 컨트롤이 VIEWSTATUS_OPAQUE 지원함을 나타내도록 설정합니다pdwStatus(가능한 값은 VIEWSTATUS 열거형에 있음).

Windows SDK에서 IViewObjectEx::GetViewStatus를 참조하세요.

IViewObjectExImpl::QueryHitPoint

지정한 점이 지정된 사각형에 있는지 확인하고 HITRESULT 값을 pHitResult반환합니다.

STDMETHOD(QueryHitPoint)(
    DWORD dwAspect,
    LPCRECT pRectBounds,
    POINT ptlLoc,
    LONG /* lCloseHit */,
    DWORD* /* pHitResult */);

설명

값은 HITRESULT_HIT 또는 HITRESULT_OUTSIDE 수 있습니다.

DVASPECT_CONTENT으면 dwAspect 메서드는 S_OK 반환합니다. 그렇지 않으면 메서드가 E_FAIL 반환합니다.

Windows SDK에서 IViewObjectEx::QueryHitPoint를 참조하세요.

IViewObjectExImpl::QueryHitRect

컨트롤의 표시 사각형이 지정된 위치 사각형의 점과 겹치고 HITRESULT 값을 pHitResult반환하는지 여부를 확인합니다.

STDMETHOD(QueryHitRect)(
    DWORD dwAspect,
    LPCRECT pRectBounds,
    LPRECT prcLoc,
    LONG /* lCloseHit */,
    DWORD* /* pHitResult */);

설명

값은 HITRESULT_HIT 또는 HITRESULT_OUTSIDE 수 있습니다.

DVASPECT_CONTENT으면 dwAspect 메서드는 S_OK 반환합니다. 그렇지 않으면 메서드가 E_FAIL 반환합니다.

Windows SDK에서 IViewObjectEx::QueryHitRect를 참조하세요.

IViewObjectExImpl::SetAdvise

컨트롤 뷰의 변경 내용에 대해 싱크에 알림을 받을 수 있도록 컨트롤과 조언 싱크 간의 연결을 설정합니다.

STDMETHOD(SetAdvise)(
    DWORD /* aspects */,
    DWORD /* advf */,
    IAdviseSink* pAdvSink);

설명

advise 싱크의 IAdviseSink 인터페이스에 대한 포인터는 컨트롤 클래스 데이터 멤버 CComControlBase::m_spAdviseSink 저장됩니다.

Windows SDK에서 IViewObject::SetAdvise를 참조하세요.

IViewObjectExImpl::Unfreeze

컨트롤의 그리기 표현의 고정을 해제합니다. ATL 구현은 E_NOTIMPL 반환합니다.

STDMETHOD(Unfreeze)(DWORD /* dwFreeze */);

설명

Windows SDK에서 IViewObject::Unfreeze를 참조하세요.

IWorkerThreadClient::CloseHandle

이 개체와 연결된 핸들을 닫도록 이 메서드를 구현합니다.

HRESULT CloseHandle(HANDLE hHandle);

매개 변수

hHandle
닫을 핸들입니다.

Return Value

성공 시 S_OK 반환하거나 실패 시 오류 HRESULT를 반환합니다.

설명

이 메서드에 전달된 핸들은 이전에 CWorkerThread::AddHandle을 호출하여 이 개체와 연결되었습니다.

예시

다음 코드는 간단한 구현을 IWorkerThreadClient::CloseHandle보여줍니다.

HRESULT CloseHandle(HANDLE hObject)
{
   // Users should do any shutdown operation required here.
   // Generally, this means just closing the handle.

   if (!::CloseHandle(hObject))
   {
      // Closing the handle failed for some reason.
      return AtlHresultFromLastError();
   }

   return S_OK;
}

IWorkerThreadClient::Execute

이 개체와 연결된 핸들이 신호를 받으면 코드를 실행하도록 이 메서드를 구현합니다.

HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);

매개 변수

dwParam
사용자 매개 변수입니다.

hObject
신호를 받은 핸들입니다.

Return Value

성공 시 S_OK 반환하거나 실패 시 오류 HRESULT를 반환합니다.

설명

이 메서드에 전달된 핸들 및 DWORD/포인터는 이전에 CWorkerThread::AddHandle을 호출하여 이 개체와 연결되었습니다.

예시

다음 코드는 간단한 구현을 IWorkerThreadClient::Execute보여줍니다.

HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject)
{
   // Cast the parameter to its known type.
   LONG* pn = reinterpret_cast<LONG*>(dwParam);

   // Increment the LONG.
   LONG n = InterlockedIncrement(pn);

   // Log the results.
   printf_s("Handle 0x%08X incremented value to : %d\n", (DWORD_PTR)hObject, n);

   return S_OK;
}

참고 항목

CComControl 클래스
ActiveX 컨트롤 인터페이스
자습서
ATL 프로젝트 만들기
클래스 개요