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 CComCompositeControl
classe 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 CComCompositeControl
table 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
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