Partager via


CComCompositeControl, classe

Cette classe fournit les méthodes requises pour implémenter un contrôle composite.

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 CComCompositeControl : public CComControl<T,CAxDialogImpl<T>>

Paramètres

T
Votre classe, dérivée de CComObjectRoot ou CComObjectRootEx, ainsi que de toutes les autres interfaces que vous souhaitez prendre en charge pour votre contrôle composite.

Membres

Constructeurs publics

Nom Description
CComCompositeControl ::CComCompositeControl Constructeur .
CComCompositeControl ::~CComCompositeControl Destructeur.

Méthodes publiques

Nom Description
CComCompositeControl ::AdviseSinkMap Appelez cette méthode pour conseiller ou annuler l’accès à tous les contrôles hébergés par le contrôle composite.
CComCompositeControl ::CalcExtent Appelez cette méthode pour calculer la taille en unités HIMETRIC de la ressource de boîte de dialogue utilisée pour héberger le contrôle composite.
CComCompositeControl ::Create Cette méthode est appelée pour créer la fenêtre de contrôle du contrôle composite.
CComCompositeControl ::CreateControlWindow Appelez cette méthode pour créer la fenêtre de contrôle et conseiller tout contrôle hébergé.
CComCompositeControl ::SetBackgroundColorFromAmbient Appelez cette méthode pour définir la couleur d’arrière-plan du contrôle composite à l’aide de la couleur d’arrière-plan du conteneur.

Membres de données publics

Nom Description
CComCompositeControl ::m_hbrBackground Pinceau d’arrière-plan.
CComCompositeControl ::m_hWndFocus Handle de la fenêtre qui a actuellement le focus.

Notes

Les classes dérivées de la classe CComCompositeControl héritent des fonctionnalités d’un contrôle composite ActiveX. Les contrôles ActiveX dérivés CComCompositeControl sont hébergés par une boîte de dialogue standard. Ces types de contrôles sont appelés contrôles composites, car ils peuvent héberger d’autres contrôles (contrôles Windows natifs et contrôles ActiveX).

CComCompositeControl identifie la ressource de boîte de dialogue à utiliser pour créer le contrôle composite en recherchant un membre de données énuméré dans la classe enfant. L’ID de membre de cette classe enfant est défini sur l’ID de ressource de la ressource de boîte de dialogue qui sera utilisé comme fenêtre du contrôle. Voici un exemple de membre de données à partir duquel CComCompositeControl la classe dérivée doit contenir pour identifier la ressource de boîte de dialogue à utiliser pour la fenêtre du contrôle :

enum { IDD = IDD_MYCOMPOSITE };

Remarque

Les contrôles composites sont toujours fenêtrés, bien qu’ils puissent contenir des contrôles sans fenêtre.

Un contrôle implémenté par une CComCompositeControlclasse dérivée a un comportement de tabulation par défaut intégré. Lorsque le contrôle reçoit le focus en étant tablé vers une application contenante, appuyez successivement sur la touche TAB pour que le focus soit cycle sur tous les contrôles contenus du contrôle composite, puis hors du contrôle composite et sur l’élément suivant dans l’ordre de tabulation du conteneur. L’ordre de tabulation des contrôles hébergés est déterminé par la ressource de boîte de dialogue et détermine l’ordre dans lequel le tabulation se produit.

Remarque

Pour que les accélérateurs fonctionnent correctement avec une CComCompositeControltable d’accélérateurs, il est nécessaire de charger une table d’accélérateurs à mesure que le contrôle est créé, de transmettre le handle et le nombre d’accélérateurs dans IOleControlImpl ::GetControlInfo, puis de détruire la table lorsque le contrôle est libéré.

Exemple

// Example for overriding IOleControlImpl::GetControlInfo()
// This example uses the accelerator table from the project resources
// with the identifier IDR_ACCELTABLE
// Define GetControlInfo() in the header of your composite 
// control class as follows:

STDMETHOD(GetControlInfo)(CONTROLINFO* pCI)
{
    // Load the accelerator table from the resource
    pCI->hAccel = LoadAccelerators(_AtlBaseModule.GetResourceInstance(), 
       MAKEINTRESOURCE(IDR_ACCELTABLE));

    if (pCI->hAccel == NULL)
        return E_FAIL;

    // Get the number of accelerators in the table
    pCI->cAccel = (USHORT)CopyAcceleratorTable(pCI->hAccel, NULL, 0);
    // The following is optional if you want your control
    // to process the return and/or escape keys
    // pCI.dwFlags = CTRLINFO_EATS_RETURN | CTRLINFO_EATS_ESCAPE;
    pCI->dwFlags = 0;

    return S_OK;
}

Hiérarchie d'héritage

WinBase

CComControlBase

CComControl

CComCompositeControl

Spécifications

En-tête : atlctl.h

CComCompositeControl ::AdviseSinkMap

Appelez cette méthode pour conseiller ou annuler l’accès à tous les contrôles hébergés par le contrôle composite.

HRESULT AdviseSinkMap(bool bAdvise);

Paramètres

bAdvise
True si tous les contrôles doivent être conseillés ; sinon false.

Valeur de retour

Valeur Description
S_OK Tous les contrôles de la carte récepteur d’événements ont été connectés ou déconnectés de leur source d’événement avec succès.
E_FAIL Tous les contrôles de la carte récepteur d’événements ne peuvent pas être connectés ou déconnectés de leur source d’événement avec succès.
E_POINTER Cette erreur indique généralement un problème avec une entrée dans le mappage du récepteur d’événements du contrôle ou un problème avec un argument de modèle utilisé dans une classe ou IDispEventSimpleImpl une IDispEventImpl classe de base.
CONNECT_E_ADVISELIMIT Le point de connexion a déjà atteint sa limite de connexions et ne peut plus accepter.
CONNECT_E_CANNOTCONNECT Le récepteur ne prend pas en charge l’interface requise par ce point de connexion.
CONNECT_E_NOCONNECTION La valeur du cookie ne représente pas de connexion valide. Cette erreur indique généralement un problème avec une entrée dans le mappage du récepteur d’événements du contrôle ou un problème avec un argument de modèle utilisé dans une classe ou IDispEventSimpleImpl une IDispEventImpl classe de base.

Notes

L’implémentation de base de cette méthode recherche les entrées dans le mappage du récepteur d’événements. Il conseille ensuite ou annule la connexion pointe vers les objets COM décrits par les entrées du récepteur d’événements. Cette méthode membre s’appuie également sur le fait que la classe dérivée hérite d’une instance de IDispEventImpl chaque contrôle de la carte récepteur qui doit être conseillée ou non supervisée.

CComCompositeControl ::CalcExtent

Appelez cette méthode pour calculer la taille en unités HIMETRIC de la ressource de boîte de dialogue utilisée pour héberger le contrôle composite.

BOOL CalcExtent(SIZE& size);

Paramètres

size
Référence à une SIZE structure à remplir par cette méthode.

Valeur de retour

TRUE si le contrôle est hébergé par une boîte de dialogue ; sinon FALSE.

Notes

La taille est retournée dans le paramètre de taille .

CComCompositeControl ::Create

Cette méthode est appelée pour créer la fenêtre de contrôle du contrôle composite.

HWND Create(
    HWND hWndParent,
    RECT& /* rcPos */,
    LPARAM dwInitParam = NULL);

Paramètres

hWndParent
Handle vers la fenêtre parente du contrôle.

rcPos
Réservé.

dwInitParam
Données à transmettre au contrôle lors de la création du contrôle. Les données transmises en tant que dwInitParam s’affichent en tant que paramètre LPARAM du message WM_INITDIALOG , qui sera envoyé au contrôle composite lors de sa création.

Valeur de retour

Handle de la boîte de dialogue de contrôle composite nouvellement créée.

Notes

Cette méthode est généralement appelée lors de l’activation sur place du contrôle.

CComCompositeControl ::CComCompositeControl

Constructeur .

CComCompositeControl();

Notes

Initialise les membres de données CComCompositeControl ::m_hbrBackground et CComCompositeControl ::m_hWndFocus sur NULL.

CComCompositeControl ::~CComCompositeControl

Destructeur.

~CComCompositeControl();

Notes

Supprime l’objet d’arrière-plan, s’il existe.

CComCompositeControl ::CreateControlWindow

Appelez cette méthode pour créer la fenêtre de contrôle et conseiller les contrôles hébergés.

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

Paramètres

hWndParent
Handle vers la fenêtre parente du contrôle.

rcPos
Rectangle de position du contrôle composite dans les coordonnées du client par rapport à hWndParent.

Valeur de retour

Retourne un handle dans la boîte de dialogue de contrôle composite nouvellement créée.

Notes

Cette méthode appelle CComCompositeControl ::Create et CComCompositeControl ::AdviseSinkMap.

CComCompositeControl ::m_hbrBackground

Pinceau d’arrière-plan.

HBRUSH m_hbrBackground;

CComCompositeControl ::m_hWndFocus

Handle de la fenêtre qui a actuellement le focus.

HWND m_hWndFocus;

CComCompositeControl ::SetBackgroundColorFromAmbient

Appelez cette méthode pour définir la couleur d’arrière-plan du contrôle composite à l’aide de la couleur d’arrière-plan du conteneur.

HRESULT SetBackgroundColorFromAmbient();

Valeur de retour

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

Voir aussi

CComControl, classe
Notions de base des contrôles composites
Vue d’ensemble de la classe