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 les fenêtres d'exécution.

template < 
class T  
> 
class CComCompositeControl : 
public CComControl< T, CAxDialogImpl< T > >

Paramètres

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

Membres

Constructeurs publics

Nom

Description

CComCompositeControl::CComCompositeControl

Constructeur.

CComCompositeControl::~CComCompositeControl

Le destructeur.

Méthodes publiques

Nom

Description

CComCompositeControl::AdviseSinkMap

Appelez cette méthode pour avertir ou unadvise 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 du contrôle et pour notifier tout contrôle hébergé.

CComCompositeControl::SetBackgroundColorFromAmbient

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

Données membres publiques

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 les fonctionnalités d'un contrôle composite ActiveX. Les contrôles ActiveX dérivés d' CComCompositeControl sont hébergés par une boîte de dialogue standard. Ces types de contrôles sont appelés des contrôles composites car ils peuvent héberger d'autres contrôles (contrôles natifs de contrôles Windows et ActiveX).

CComCompositeControl identifie la ressource de boîte de dialogue à utiliser lors de la création du contrôle composite en recherchant une donnée membre énumérée dans la classe enfant. Le membre IDD de cette classe enfant a pour valeur l'ID de ressource de la ressource de boîte de dialogue qui sera utilisée comme fenêtre de contrôle. Voici un exemple des données membres que la classe dérivée d' CComCompositeControl doit contenir pour identifier la ressource de boîte de dialogue à utiliser pour la fenêtre du contrôle :

enum { IDD = IDD_MYCOMPOSITE };

Notes

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

Un contrôle implémenté par CComCompositeControl- la classe dérivée a le comportement de tabulation par défaut incorporé. Lorsque le contrôle reçoit le focus en étant tabulé dans une application conteneur, appuyez sur la touche TAB successivement entraîne le focus d'être défilé via les contrôles contenus de tout le contrôle composite, puis du contrôle composite et en fonction à 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 la tabulation se produit.

Notes

Pour que les accélérateurs fonctionnent correctement avec CComCompositeControl, il est nécessaire de charger une table d'accélérateurs lorsque le contrôle est créé, passez le handle et le nombre d'accélérateurs dans le en IOleControlImpl::GetControlInfo, et perdent enfin 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

Configuration requise

Header: atlctl.h

Voir aussi

Référence

CComControl, classe

Concepts

Notions de base du contrôle composite

Autres ressources

Vue d'ensemble de la classe ATL