Condividi tramite


Classe IViewObjectExImpl

Questa classe implementa IUnknown e fornisce implementazioni predefinite delle interfacce IViewObject, IViewObject2 e IViewObjectEx .

Importante

Questa classe e i relativi membri non possono essere usati nelle applicazioni eseguite in Windows Runtime.

Sintassi

template<class T>
class ATL_NO_VTABLE IViewObjectExImpl
   : public IViewObjectEx

Parametri

T
Classe derivata da IViewObjectExImpl.

Membri

Metodi pubblici

Nome Descrizione
IViewObjectExImpl::D raw Disegna una rappresentazione del controllo in un contesto di dispositivo.
IViewObjectExImpl::Freeze Blocca la rappresentazione disegnata di un controllo in modo che non cambierà fino a quando un oggetto Unfreeze. L'implementazione ATL restituisce E_NOTIMPL.
IViewObjectExImpl::GetAdvise Recupera una connessione sink di avviso esistente nel controllo, se presente.
IViewObjectExImpl::GetColorSet Restituisce la tavolozza logica utilizzata dal controllo per il disegno. L'implementazione ATL restituisce E_NOTIMPL.
IViewObjectExImpl::GetExtent Recupera le dimensioni di visualizzazione del controllo in unità HIMETRIC (0,01 millimetri per unità) dal membro dati della classe di controllo CComControlBase::m_sizeExtent.
IViewObjectExImpl::GetNaturalExtent Fornisce hint di ridimensionamento dal contenitore per l'oggetto da usare quando l'utente lo ridimensiona.
IViewObjectExImpl::GetRect Restituisce un rettangolo che descrive un aspetto di disegno richiesto. L'implementazione ATL restituisce E_NOTIMPL.
IViewObjectExImpl::GetViewStatus Restituisce informazioni sull'opacità dell'oggetto e sugli aspetti di disegno supportati.
IViewObjectExImpl::QueryHitPoint Controlla se il punto specificato si trova nel rettangolo specificato e restituisce un valore HITRESULT in pHitResult.
IViewObjectExImpl::QueryHitRect Controlla se il rettangolo di visualizzazione del controllo si sovrappone a qualsiasi punto nel rettangolo di posizione specificato e restituisce un valore HITRESULT in pHitResult.
IViewObjectExImpl::SetAdvise Imposta una connessione tra il controllo e un sink di avviso in modo che il sink possa ricevere una notifica sulle modifiche nella visualizzazione del controllo.
IViewObjectExImpl::Unfreeze Annulla la rappresentazione disegnata del controllo. L'implementazione ATL restituisce E_NOTIMPL.

Osservazioni:

Le interfacce IViewObject, IViewObject2 e IViewObjectEx consentono a un controllo di visualizzare direttamente se stesso e di creare e gestire un sink di avviso per notificare al contenitore le modifiche nella visualizzazione del controllo. L'interfaccia IViewObjectEx fornisce supporto per le funzionalità di controllo estese, ad esempio il disegno senza sfarfallio, i controlli non rettangolari e trasparenti e i test di hit testing (ad esempio, la chiusura di un clic del mouse deve essere considerata sul controllo). La classe IViewObjectExImpl fornisce un'implementazione predefinita di queste interfacce e implementa inviando informazioni al dispositivo di dump nelle compilazioni IUnknown di debug.

Gerarchia di ereditarietà

IViewObjectEx

IViewObjectExImpl

Requisiti

Intestazione: atlctl.h

IViewObjectExImpl::D raw

Disegna una rappresentazione del controllo in un contesto di dispositivo.

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 */);

Osservazioni:

Questo metodo chiama CComControl::OnDrawAdvanced il metodo che a sua volta chiama il metodo della classe di OnDraw controllo. Un OnDraw metodo viene aggiunto automaticamente alla classe di controllo quando si crea il controllo con la Creazione guidata controllo ATL. L'impostazione predefinita OnDraw della procedura guidata disegna un rettangolo con l'etichetta "ATL 3.0".

Vedere IViewObject::D raw in Windows SDK.

IViewObjectExImpl::Freeze

Blocca la rappresentazione disegnata di un controllo in modo che non cambierà fino a quando un oggetto Unfreeze. L'implementazione ATL restituisce E_NOTIMPL.

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

Osservazioni:

Vedi IViewObject::Freeze in Windows SDK.

IViewObjectExImpl::GetAdvise

Recupera una connessione sink di avviso esistente nel controllo, se presente.

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

Osservazioni:

Il sink di avviso viene archiviato nel membro dati della classe di controllo CComControlBase::m_spAdviseSink.

Vedere IViewObject::GetAdvise in Windows SDK.

IViewObjectExImpl::GetColorSet

Restituisce la tavolozza logica utilizzata dal controllo per il disegno. L'implementazione ATL restituisce E_NOTIMPL.

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

Osservazioni:

Vedere IViewObject::GetColorSet in Windows SDK.

IViewObjectExImpl::GetExtent

Recupera le dimensioni di visualizzazione del controllo in unità HIMETRIC (0,01 millimetri per unità) dal membro dati della classe di controllo CComControlBase::m_sizeExtent.

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

Osservazioni:

Vedere IViewObject2::GetExtent in Windows SDK.

IViewObjectExImpl::GetNaturalExtent

Fornisce hint di ridimensionamento dal contenitore per l'oggetto da usare quando l'utente lo ridimensiona.

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

Osservazioni:

Se dwAspect è DVASPECT_CONTENT e pExtentInfo-dwExtentMode> è DVEXTENT_CONTENT, imposta * psizel sul membro dati della classe di controllo CComControlBase::m_sizeNatural. In caso contrario, restituisce un errore HRESULT.

Vedere IViewObjectEx::GetNaturalExtent in Windows SDK.

IViewObjectExImpl::GetRect

Restituisce un rettangolo che descrive un aspetto di disegno richiesto. L'implementazione ATL restituisce E_NOTIMPL.

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

Osservazioni:

Vedere IViewObjectEx::GetRect in Windows SDK.

IViewObjectExImpl::GetViewStatus

Restituisce informazioni sull'opacità dell'oggetto e sugli aspetti di disegno supportati.

STDMETHOD(GetViewStatus)(DWORD* pdwStatus);

Osservazioni:

Per impostazione predefinita, ATL imposta pdwStatus per indicare che il controllo supporta VIEWSTATUS_OPAQUE (i valori possibili si trovano nell'enumerazione VIEWSTATUS ).

Vedere IViewObjectEx::GetViewStatus in Windows SDK.

IViewObjectExImpl::QueryHitPoint

Controlla se il punto specificato si trova nel rettangolo specificato e restituisce un valore HITRESULT in pHitResult.

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

Osservazioni:

Il valore può essere HITRESULT_HIT o HITRESULT_OUTSIDE.

Se dwAspect è uguale a DVASPECT_CONTENT, il metodo restituisce S_OK. In caso contrario, il metodo restituisce E_FAIL.

Vedere IViewObjectEx::QueryHitPoint in Windows SDK.

IViewObjectExImpl::QueryHitRect

Controlla se il rettangolo di visualizzazione del controllo si sovrappone a qualsiasi punto nel rettangolo di posizione specificato e restituisce un valore HITRESULT in pHitResult.

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

Osservazioni:

Il valore può essere HITRESULT_HIT o HITRESULT_OUTSIDE.

Se dwAspect è uguale a DVASPECT_CONTENT, il metodo restituisce S_OK. In caso contrario, il metodo restituisce E_FAIL.

Vedere IViewObjectEx::QueryHitRect in Windows SDK.

IViewObjectExImpl::SetAdvise

Imposta una connessione tra il controllo e un sink di avviso in modo che il sink possa ricevere una notifica sulle modifiche nella visualizzazione del controllo.

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

Osservazioni:

Il puntatore all'interfaccia IAdviseSink nel sink di avviso viene archiviato nel membro dati della classe di controllo CComControlBase::m_spAdviseSink.

Vedere IViewObject::SetAdvise in Windows SDK.

IViewObjectExImpl::Unfreeze

Annulla la rappresentazione disegnata del controllo. L'implementazione ATL restituisce E_NOTIMPL.

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

Osservazioni:

Vedi IViewObject::Unfreeze in Windows SDK.

IWorkerThreadClient::CloseHandle

Implementare questo metodo per chiudere l'handle associato a questo oggetto.

HRESULT CloseHandle(HANDLE hHandle);

Parametri

hHandle
Handle da chiudere.

Valore restituito

Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.

Osservazioni:

L'handle passato a questo metodo è stato precedentemente associato a questo oggetto da una chiamata a CWorkerThread::AddHandle.

Esempio

Il codice seguente illustra una semplice implementazione di 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

Implementare questo metodo per eseguire il codice quando l'handle associato a questo oggetto viene segnalato.

HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);

Parametri

dwParam
Parametro utente.

hObject
Handle segnalato.

Valore restituito

Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.

Osservazioni:

L'handle e il puntatore DWORD passati a questo metodo sono stati precedentemente associati a questo oggetto da una chiamata a CWorkerThread::AddHandle.

Esempio

Il codice seguente illustra una semplice implementazione di 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;
}

Vedi anche

Classe CComControl
Interfacce dei controlli ActiveX
Esercitazione
Creazione di un progetto ATL
Cenni preliminari sulla classe