IViewObjectExImpl, classe

Cette classe implémente et fournit des implémentations IUnknown par défaut des interfaces IViewObject, IViewObject2 et IViewObjectEx .

Important

Cette classe et ses membres ne peuvent pas être utilisés dans les applications qui s’exécutent dans Windows Runtime.

Syntaxe

template<class T>
class ATL_NO_VTABLE IViewObjectExImpl
   : public IViewObjectEx

Paramètres

T
Votre classe, dérivée de IViewObjectExImpl.

Membres

Méthodes publiques

Nom Description
IViewObjectExImpl ::D raw Dessine une représentation du contrôle sur un contexte d’appareil.
IViewObjectExImpl ::Freeze Fige la représentation dessinée d’un contrôle pour qu’il ne change pas tant qu’un Unfreeze. L’implémentation ATL retourne E_NOTIMPL.
IViewObjectExImpl ::GetAdvise Récupère une connexion de récepteur de conseil existante sur le contrôle, s’il en existe un.
IViewObjectExImpl ::GetColorSet Retourne la palette logique utilisée par le contrôle pour le dessin. L’implémentation ATL retourne E_NOTIMPL.
IViewObjectExImpl ::GetExtent Récupère la taille d’affichage du contrôle en unités HIMETRIC (0,01 millimètre par unité) à partir du membre de données de la classe de contrôle CComControlBase ::m_sizeExtent.
IViewObjectExImpl ::GetNaturalExtent Fournit des indicateurs de dimensionnement à partir du conteneur que l’objet doit utiliser lorsque l’utilisateur le redimensionne.
IViewObjectExImpl ::GetRect Retourne un rectangle décrivant un aspect de dessin demandé. L’implémentation ATL retourne E_NOTIMPL.
IViewObjectExImpl ::GetViewStatus Retourne des informations sur l’opacité de l’objet et les aspects de dessin pris en charge.
IViewObjectExImpl ::QueryHitPoint Vérifie si le point spécifié se trouve dans le rectangle spécifié et retourne une valeur HITRESULT dans pHitResult.
IViewObjectExImpl ::QueryHitRect Vérifie si le rectangle d’affichage du contrôle chevauche n’importe quel point dans le rectangle d’emplacement spécifié et retourne une valeur HITRESULT dans pHitResult.
IViewObjectExImpl ::SetAdvise Configure une connexion entre le contrôle et un récepteur d’avis afin que le récepteur puisse être informé des modifications apportées à la vue du contrôle.
IViewObjectExImpl ::Unfreeze Annule la représentation dessinée du contrôle. L’implémentation ATL retourne E_NOTIMPL.

Notes

Les interfaces IViewObject, IViewObject2 et IViewObjectEx permettent à un contrôle de s’afficher directement et de créer et de gérer un récepteur d’avis pour avertir le conteneur des modifications apportées à l’affichage du contrôle. L’interface IViewObjectEx prend en charge les fonctionnalités de contrôle étendues telles que le dessin sans scintillement, les contrôles non rectangulaires et transparents et les tests de positionnement (par exemple, la fermeture d’un clic de souris doit être prise en compte sur le contrôle). La classe IViewObjectExImpl fournit une implémentation par défaut de ces interfaces et implémente en envoyant des IUnknown informations à l’appareil de vidage dans les builds de débogage.

Hiérarchie d'héritage

IViewObjectEx

IViewObjectExImpl

Spécifications

En-tête : atlctl.h

IViewObjectExImpl ::D raw

Dessine une représentation du contrôle sur un contexte d’appareil.

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

Notes

Cette méthode appelle CComControl::OnDrawAdvanced à son tour la méthode de votre classe de OnDraw contrôle. Une OnDraw méthode est automatiquement ajoutée à votre classe de contrôle lorsque vous créez votre contrôle avec l’Assistant Contrôle ATL. La valeur par défaut OnDraw de l’Assistant dessine un rectangle avec l’étiquette « ATL 3.0 ».

Consultez IViewObject ::D raw dans le Kit de développement logiciel (SDK) Windows.

IViewObjectExImpl ::Freeze

Fige la représentation dessinée d’un contrôle pour qu’il ne change pas tant qu’un Unfreeze. L’implémentation ATL retourne E_NOTIMPL.

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

Notes

Voir IViewObject ::Freeze dans le Kit de développement logiciel (SDK) Windows.

IViewObjectExImpl ::GetAdvise

Récupère une connexion de récepteur de conseil existante sur le contrôle, s’il en existe un.

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

Notes

Le récepteur consultatif est stocké dans le membre de données de la classe de contrôle CComControlBase ::m_spAdviseSink.

Voir IViewObject ::GetAdvise dans le Kit de développement logiciel (SDK) Windows.

IViewObjectExImpl ::GetColorSet

Retourne la palette logique utilisée par le contrôle pour le dessin. L’implémentation ATL retourne E_NOTIMPL.

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

Notes

Consultez IViewObject ::GetColorSet dans le Kit de développement logiciel (SDK) Windows.

IViewObjectExImpl ::GetExtent

Récupère la taille d’affichage du contrôle en unités HIMETRIC (0,01 millimètre par unité) à partir du membre de données de la classe de contrôle CComControlBase ::m_sizeExtent.

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

Notes

Consultez IViewObject2 ::GetExtent dans le Kit de développement logiciel (SDK) Windows.

IViewObjectExImpl ::GetNaturalExtent

Fournit des indicateurs de dimensionnement à partir du conteneur que l’objet doit utiliser lorsque l’utilisateur le redimensionne.

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

Notes

Si dwAspect DVASPECT_CONTENT et pExtentInfo-dwExtentMode> est DVEXTENT_CONTENT, définit * psizel sur le membre de données de la classe de contrôle CComControlBase ::m_sizeNatural. Sinon, retourne une erreur HRESULT.

Consultez IViewObjectEx ::GetNaturalExtent dans le Kit de développement logiciel (SDK) Windows.

IViewObjectExImpl ::GetRect

Retourne un rectangle décrivant un aspect de dessin demandé. L’implémentation ATL retourne E_NOTIMPL.

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

Notes

Consultez IViewObjectEx ::GetRect dans le Kit de développement logiciel (SDK) Windows.

IViewObjectExImpl ::GetViewStatus

Retourne des informations sur l’opacité de l’objet et les aspects de dessin pris en charge.

STDMETHOD(GetViewStatus)(DWORD* pdwStatus);

Notes

Par défaut, ATL définit pdwStatus pour indiquer que le contrôle prend en charge VIEWSTATUS_OPAQUE (les valeurs possibles se trouvent dans l’énumération VIEWSTATUS ).

Consultez IViewObjectEx ::GetViewStatus dans le Kit de développement logiciel (SDK) Windows.

IViewObjectExImpl ::QueryHitPoint

Vérifie si le point spécifié se trouve dans le rectangle spécifié et retourne une valeur HITRESULT dans pHitResult.

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

Notes

La valeur peut être HITRESULT_HIT ou HITRESULT_OUTSIDE.

Si dwAspect elle est égale DVASPECT_CONTENT, la méthode retourne S_OK. Sinon, la méthode retourne E_FAIL.

Voir IViewObjectEx ::QueryHitPoint dans le Kit de développement logiciel (SDK) Windows.

IViewObjectExImpl ::QueryHitRect

Vérifie si le rectangle d’affichage du contrôle chevauche n’importe quel point dans le rectangle d’emplacement spécifié et retourne une valeur HITRESULT dans pHitResult.

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

Notes

La valeur peut être HITRESULT_HIT ou HITRESULT_OUTSIDE.

Si dwAspect elle est égale DVASPECT_CONTENT, la méthode retourne S_OK. Sinon, la méthode retourne E_FAIL.

Consultez IViewObjectEx ::QueryHitRect dans le Kit de développement logiciel (SDK) Windows.

IViewObjectExImpl ::SetAdvise

Configure une connexion entre le contrôle et un récepteur d’avis afin que le récepteur puisse être informé des modifications apportées à la vue du contrôle.

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

Notes

Le pointeur vers l’interface IAdviseSink sur le récepteur conseiller est stocké dans le membre de données de la classe de contrôle CComControlBase ::m_spAdviseSink.

Voir IViewObject ::SetAdvise dans le Kit de développement logiciel (SDK) Windows.

IViewObjectExImpl ::Unfreeze

Annule la représentation dessinée du contrôle. L’implémentation ATL retourne E_NOTIMPL.

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

Notes

Voir IViewObject ::Unfreeze dans le Kit de développement logiciel (SDK) Windows.

IWorkerThreadClient ::CloseHandle

Implémentez cette méthode pour fermer le handle associé à cet objet.

HRESULT CloseHandle(HANDLE hHandle);

Paramètres

hHandle
Handle à fermer.

Valeur de retour

RetourneZ S_OK en cas de réussite ou d’erreur HRESULT en cas d’échec.

Notes

Le handle passé à cette méthode a été précédemment associé à cet objet par un appel à CWorkerThread ::AddHandle.

Exemple

Le code suivant montre une implémentation simple de 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

Implémentez cette méthode pour exécuter du code lorsque le handle associé à cet objet devient signalé.

HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);

Paramètres

dwParam
Paramètre utilisateur.

hObject
Handle qui est devenu signalé.

Valeur de retour

RetourneZ S_OK en cas de réussite ou d’erreur HRESULT en cas d’échec.

Notes

Le handle et le pointeur DWORD passés à cette méthode ont été précédemment associés à cet objet par un appel à CWorkerThread ::AddHandle.

Exemple

Le code suivant montre une implémentation simple de 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;
}

Voir aussi

CComControl, classe
Interfaces de contrôles ActiveX
Didacticiel
Création d’un projet ATL
Vue d’ensemble de la classe