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, IViewObject2 및 IViewObjectEx 인터페이스를 사용하면 컨트롤이 직접 자신을 표시하고 컨트롤 디스플레이의 변경 내용을 컨테이너에 알리는 조언 싱크를 만들고 관리할 수 있습니다. 인터페이스는 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;
}