Partage via


CComControl, classe

Cette classe fournit des méthodes pour créer et gérer des contrôles ATL.

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 WinBase = CWindowImpl<T>>
class ATL_NO_VTABLE CComControl : public CComControlBase,
    public WinBase;

Paramètres

T
Classe implémentant le contrôle.

WinBase
Classe de base qui implémente des fonctions de fenêtrage. La valeur par défaut est CWindowImpl.

Membres

Constructeurs publics

Nom Description
CComControl ::CComControl Constructeur.

Méthodes publiques

Nom Description
CComControl ::ControlQueryInterface Récupère un pointeur vers l'interface demandée.
CComControl ::CreateControlWindow Crée une fenêtre pour le contrôle.
CComControl ::FireOnChanged Avertit le récepteur du conteneur qu’une propriété de contrôle a changé.
CComControl ::FireOnRequestEdit Avertit le récepteur du conteneur qu’une propriété de contrôle est sur le point de changer et que l’objet demande au récepteur comment continuer.
CComControl ::MessageBox Appelez cette méthode pour créer, afficher et utiliser une boîte de message.

Notes

CComControl est un ensemble de fonctions d’assistance de contrôle utiles et de membres de données essentiels pour les contrôles ATL. Lorsque vous créez un contrôle standard ou un contrôle DHTML à l’aide de l’Assistant Contrôle ATL, l’Assistant dérive automatiquement votre classe de CComControl. CComControl dérive la plupart de ses méthodes de CComControlBase.

Pour plus d’informations sur la création d’un contrôle, consultez le didacticiel ATL. Pour plus d’informations sur l’Assistant Projet ATL, consultez l’article Création d’un projet ATL.

Pour obtenir une démonstration des méthodes et des membres de CComControl données, consultez l’exemple CIRC .

Hiérarchie d'héritage

WinBase

CComControlBase

CComControl

Spécifications

En-tête : atlctl.h

CComControl ::CComControl

Constructeur .

CComControl();

Notes

Appelle le constructeur CComControlBase , en passant le m_hWnd membre de données hérité via CWindowImpl.

CComControl ::ControlQueryInterface

Récupère un pointeur vers l'interface demandée.

virtual HRESULT ControlQueryInterface(const IID& iid, void** ppv);

Paramètres

Iid
[in] GUID de l’interface demandée.

Ppv
[out] Pointeur vers le pointeur d’interface identifié par iid ou NULL si l’interface est introuvable.

Notes

Gère uniquement les interfaces dans la table de mappage COM.

Exemple

// Retrieve the control's IOleObject interface. Note interface 
// is automatically released when pOleObject goes out of scope

CComPtr<IOleObject> pOleObject;
ControlQueryInterface(IID_IOleObject, (void**)&pOleObject);

CComControl ::CreateControlWindow

Par défaut, crée une fenêtre pour le contrôle en appelant CWindowImpl::Create.

virtual HWND CreateControlWindow(HWND hWndParent, RECT& rcPos);

Paramètres

hWndParent
[in] Gérer la fenêtre parent ou propriétaire. Un handle de fenêtre valide doit être fourni. La fenêtre de contrôle est limitée à la zone de sa fenêtre parente.

rcPos
[in] Taille initiale et position de la fenêtre à créer.

Notes

Remplacez cette méthode si vous souhaitez faire autre chose que créer une seule fenêtre, par exemple pour créer deux fenêtres, dont l’une devient une barre d’outils pour votre contrôle.

Exemple

RECT rc = {10,10,210,110};
HWND hwndParent, hwndControl;

// get HWND of control's parent window from IOleInPlaceSite interface
m_spInPlaceSite->GetWindow(&hwndParent);
hwndControl = CreateControlWindow(hwndParent, rc);

CComControl ::FireOnChanged

Avertit le récepteur du conteneur qu’une propriété de contrôle a changé.

HRESULT FireOnChanged(DISPID dispID);

Paramètres

dispID
[in] Identificateur de la propriété qui a changé.

Valeur de retour

Une des valeurs HRESULT standard.

Notes

Si votre classe de contrôle dérive de IPropertyNotifySink, cette méthode appelle CFirePropNotifyEvent ::FireOnChanged pour avertir toutes les interfaces connectées IPropertyNotifySink que la propriété de contrôle spécifiée a changé. Si votre classe de contrôle ne dérive IPropertyNotifySinkpas, cette méthode retourne S_OK.

Cette méthode est sécurisée pour appeler même si votre contrôle ne prend pas en charge les points de connexion.

Exemple

STDMETHODIMP CMyControl::put_MyText(BSTR newVal)
{
   // store newVal in CComBstr member
   m_bstrMyText = newVal;

   // note the DISPID for the MyText property is 3 in this example
   FireOnChanged(3);

   return S_OK;
}

CComControl ::FireOnRequestEdit

Avertit le récepteur du conteneur qu’une propriété de contrôle est sur le point de changer et que l’objet demande au récepteur comment continuer.

HRESULT FireOnRequestEdit(DISPID dispID);

Paramètres

dispID
[in] Identificateur de la propriété sur le point de changer.

Valeur de retour

Une des valeurs HRESULT standard.

Notes

Si votre classe de contrôle dérive d’IPropertyNotifySink, cette méthode appelle CFirePropNotifyEvent ::FireOnRequestEdit pour notifier toutes les interfaces connectées IPropertyNotifySink que la propriété de contrôle spécifiée est sur le point de changer. Si votre classe de contrôle ne dérive IPropertyNotifySinkpas, cette méthode retourne S_OK.

Cette méthode est sécurisée pour appeler même si votre contrôle ne prend pas en charge les points de connexion.

Exemple

STDMETHODIMP CMyControl::put_MyTitle(BSTR newVal)
{
   // the DISPID for MyTitle in this example is 4
   DISPID dispID = 4;

   // make sure we can change the property
   if (FireOnRequestEdit(dispID) == S_FALSE)
      return S_FALSE;

   // store newVal in CComBstr member
   m_bstrMyTitle = newVal;

   // signal that the property has been changed
   FireOnChanged(dispID);

   return S_OK;
}

CComControl ::MessageBox

Appelez cette méthode pour créer, afficher et utiliser une boîte de message.

int MessageBox(
    LPCTSTR lpszText,
    LPCTSTR lpszCaption = _T(""),
    UINT nType = MB_OK);

Paramètres

lpszText
Texte à afficher dans la zone de message.

lpszCaption
Titre de la boîte de dialogue. Si null (valeur par défaut), le titre « Erreur » est utilisé.

nType
Spécifie le contenu et le comportement de la boîte de dialogue. Consultez l’entrée MessageBox dans la documentation du Kit de développement logiciel (SDK) Windows pour obtenir la liste des différentes boîtes de message disponibles. La valeur par défaut fournit un bouton OK simple.

Valeur de retour

Retourne une valeur entière spécifiant l’une des valeurs d’élément de menu répertoriées sous MessageBox dans la documentation du Kit de développement logiciel (SDK) Windows.

Notes

MessageBox est utile à la fois pendant le développement et comme moyen simple d’afficher un message d’erreur ou d’avertissement à l’utilisateur.

Voir aussi

CWindowImpl, classe
Vue d’ensemble de la classe
CComControlBase, classe
CComCompositeControl, classe