Share via


CComControl-klasse

Opmerking

De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Deze klasse biedt methoden voor het maken en beheren van ATL-besturingselementen.

Belangrijk

Deze klasse en de bijbehorende leden kunnen niet worden gebruikt in toepassingen die worden uitgevoerd in Windows Runtime.

Syntaxis

template <class T, class WinBase = CWindowImpl<T>>
class ATL_NO_VTABLE CComControl : public CComControlBase,
    public WinBase;

Parameterwaarden

T
De klasse die het besturingselement implementeert.

WinBase
De basisklasse waarmee vensterfuncties worden geïmplementeerd. Standaard ingesteld op CWindowImpl.

Leden

Openbare constructors

Naam Description
CComControl::CComControl Bouwer.

Openbare methoden

Naam Description
CComControl::ControlQueryInterface Hiermee wordt een aanwijzer naar de aangevraagde interface opgehaald.
CComControl::CreateControlWindow Hiermee maakt u een venster voor het besturingselement.
CComControl::FireOnChanged Hiermee wordt de sink van de container aangegeven dat een besturingselementeigenschap is gewijzigd.
CComControl::FireOnRequestEdit Hiermee wordt de sink van de container gewaarschuwd dat een besturingselementeigenschap wordt gewijzigd en dat het object vraagt hoe de sink moet worden voortgezet.
CComControl::MessageBox Roep deze methode aan om een berichtvak te maken, weer te geven en te gebruiken.

Opmerkingen

CComControl is een set handige helperfuncties voor besturingselementen en essentiële gegevensleden voor ATL-besturingselementen. Wanneer u een standaard besturingselement of een DHTML-besturingselement maakt met behulp van de wizard ATL-beheer, wordt uw klas automatisch afgeleid door CComControlde wizard. CComControl is afgeleid van de meeste methoden van CComControlBase.

Zie de ATL-zelfstudie voor meer informatie over het maken van een besturingselement. Zie het artikel Een ATL-project maken voor meer informatie over de wizard ATL-project.

Zie het CIRC-voorbeeld voor een demonstratie van CComControl methoden en gegevensleden.

Overnamehiërarchie

WinBase

CComControlBase

CComControl

Requirements

Koptekst: atlctl.h

CComControl::CComControl

De constructor.

CComControl();

Opmerkingen

Roept de CComControlBase-constructor aan en geeft het m_hWnd gegevenslid door dat is overgenomen via CWindowImpl.

CComControl::ControlQueryInterface

Hiermee wordt een aanwijzer naar de aangevraagde interface opgehaald.

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

Parameterwaarden

iid
[in] De GUID van de interface die wordt aangevraagd.

Ppv
[uit] Een aanwijzer naar de interfacepointer die is geïdentificeerd door iid of NULL als de interface niet wordt gevonden.

Opmerkingen

Verwerkt alleen interfaces in de COM-kaarttabel.

Example

// 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

Maakt standaard een venster voor het besturingselement door aan te roepen CWindowImpl::Create.

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

Parameterwaarden

hWndParent
[in] Greep naar het bovenliggende of eigenaarsvenster. Er moet een geldige venstergreep worden opgegeven. Het besturingsvenster is beperkt tot het gebied van het bovenliggende venster.

rcPos
[in] De oorspronkelijke grootte en positie van het venster dat moet worden gemaakt.

Opmerkingen

Overschrijf deze methode als u iets anders wilt doen dan één venster te maken, bijvoorbeeld om twee vensters te maken, waarvan één een werkbalk voor uw besturingselement wordt.

Example

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

Hiermee wordt de sink van de container aangegeven dat een besturingselementeigenschap is gewijzigd.

HRESULT FireOnChanged(DISPID dispID);

Parameterwaarden

dispID
[in] Id van de eigenschap die is gewijzigd.

Retourwaarde

Een van de standaard HRESULT-waarden.

Opmerkingen

Als uw besturingsklasse is afgeleid van IPropertyNotifySink, roept deze methode CFirePropNotifyEvent::FireOnChanged aan om alle verbonden IPropertyNotifySink interfaces te waarschuwen dat de opgegeven besturingselementeigenschap is gewijzigd. Als uw controleklasse niet is afgeleid van IPropertyNotifySink, retourneert deze methode S_OK.

Deze methode is veilig om aan te roepen, zelfs als uw besturingselement geen ondersteuning biedt voor verbindingspunten.

Example

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

Hiermee wordt de sink van de container gewaarschuwd dat een besturingselementeigenschap wordt gewijzigd en dat het object vraagt hoe de sink moet worden voortgezet.

HRESULT FireOnRequestEdit(DISPID dispID);

Parameterwaarden

dispID
[in] Id van de eigenschap die wordt gewijzigd.

Retourwaarde

Een van de standaard HRESULT-waarden.

Opmerkingen

Als uw besturingsklasse is afgeleid van IPropertyNotifySink, roept deze methode CFirePropNotifyEvent::FireOnRequestEdit aan om alle verbonden IPropertyNotifySink interfaces op de hoogte te stellen dat de opgegeven besturingselementeigenschap wordt gewijzigd. Als uw controleklasse niet is afgeleid van IPropertyNotifySink, retourneert deze methode S_OK.

Deze methode is veilig om aan te roepen, zelfs als uw besturingselement geen ondersteuning biedt voor verbindingspunten.

Example

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

Roep deze methode aan om een berichtvak te maken, weer te geven en te gebruiken.

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

Parameterwaarden

lpszText
De tekst die moet worden weergegeven in het berichtvak.

lpszCaption
De titel van het dialoogvenster. Als NULL (de standaardinstelling) wordt de titel 'Fout' gebruikt.

nType
Hiermee geeft u de inhoud en het gedrag van het dialoogvenster. Zie de vermelding MessageBox in de Windows SDK-documentatie voor een lijst met de verschillende berichtvakken die beschikbaar zijn. De standaardwaarde biedt een eenvoudige KNOP OK .

Retourwaarde

Retourneert een geheel getal dat een van de menu-itemwaarden opgeeft die worden vermeld onder MessageBox in de Windows SDK-documentatie.

Opmerkingen

MessageBox is zowel tijdens de ontwikkeling als als een eenvoudige manier om een fout of waarschuwingsbericht weer te geven aan de gebruiker.

Zie ook

Klasse CWindowImpl
Overzicht van klassen
CComControlBase-klasse
CComCompositeControl-klasse