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