Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
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
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