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
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 pas de IPropertyNotifySink
, 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 pas de IPropertyNotifySink
, 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 simple bouton OK .
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