CComControl-Klasse
Diese Klasse stellt Methoden zum Erstellen und Verwalten von ATL-Steuerelementen bereit.
Wichtig
Diese Klasse und ihre Member können nicht in Anwendungen verwendet werden, die in der Windows-Runtime ausgeführt werden.
Syntax
template <class T, class WinBase = CWindowImpl<T>>
class ATL_NO_VTABLE CComControl : public CComControlBase,
public WinBase;
Parameter
T
Die Klasse, die das Steuerelement implementiert.
WinBase
Die Basisklasse, die Fensterfunktionen implementiert. Standardwert ist CWindowImpl.
Member
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
CComControl::CComControl | Konstruktor. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
CComControl::ControlQueryInterface | Ruft einen Zeiger auf die angeforderte Schnittstelle ab. |
CComControl::CreateControlWindow | Erstellt ein Fenster für das Steuerelement. |
CComControl::FireOnChanged | Benachrichtigt die Spüle des Containers, dass sich eine Steuerelementeigenschaft geändert hat. |
CComControl::FireOnRequestEdit | Benachrichtigt die Spüle des Containers, dass sich eine Steuerelementeigenschaft ändert und dass das Objekt die Spüle fragt, wie die Spüle fortgesetzt werden soll. |
CComControl::MessageBox | Rufen Sie diese Methode auf, um ein Meldungsfeld zu erstellen, anzuzeigen und zu betreiben. |
Hinweise
CComControl
ist eine Reihe nützlicher Steuerelementhilfsfunktionen und wesentlicher Datenmember für ATL-Steuerelemente. Wenn Sie ein Standardsteuerelement oder ein DHTML-Steuerelement mithilfe des ATL-Steuerelement-Assistenten erstellen, leitet der Assistent Ihre Klasse automatisch von CComControl
. CComControl
abgeleitet die meisten methoden von CComControlBase.
Weitere Informationen zum Erstellen eines Steuerelements finden Sie im ATL-Lernprogramm. Weitere Informationen zum ATL-Projekt-Assistenten finden Sie im Artikel Erstellen eines ATL-Projekts.
Eine Demonstration der CComControl
Methoden und Datenmember finden Sie im CIRC-Beispiel .
Vererbungshierarchie
WinBase
CComControl
Anforderungen
Header: atlctl.h
CComControl::CComControl
Der Konstruktor.
CComControl();
Hinweise
Ruft den CComControlBase-Konstruktor auf, wobei das m_hWnd
durch CWindowImpl geerbte Datenmember übergeben wird.
CComControl::ControlQueryInterface
Ruft einen Zeiger auf die angeforderte Schnittstelle ab.
virtual HRESULT ControlQueryInterface(const IID& iid, void** ppv);
Parameter
iid
[in] Die GUID der angeforderten Schnittstelle.
ppv
[out] Ein Zeiger auf den von iid identifizierten Schnittstellenzeiger oder NULL, wenn die Schnittstelle nicht gefunden wird.
Hinweise
Behandelt nur Schnittstellen in der COM-Zuordnungstabelle.
Beispiel
// 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
Erstellt standardmäßig ein Fenster für das Steuerelement durch Aufrufen CWindowImpl::Create
.
virtual HWND CreateControlWindow(HWND hWndParent, RECT& rcPos);
Parameter
hWndParent
[in] Behandeln Sie das übergeordnete Fenster oder das Besitzerfenster. Es muss ein gültiger Fensterziehpunkt angegeben werden. Das Steuerelementfenster ist auf den Bereich des übergeordneten Fensters beschränkt.
rcPos
[in] Die anfängliche Größe und Position des zu erstellenden Fensters.
Hinweise
Überschreiben Sie diese Methode, wenn Sie etwas anderes tun möchten, als ein einzelnes Fenster zu erstellen, z. B. um zwei Fenster zu erstellen, von denen einer zu einer Symbolleiste für Ihr Steuerelement wird.
Beispiel
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
Benachrichtigt die Spüle des Containers, dass sich eine Steuerelementeigenschaft geändert hat.
HRESULT FireOnChanged(DISPID dispID);
Parameter
dispID
[in] Bezeichner der Eigenschaft, die geändert wurde.
Rückgabewert
Einer der HRESULT-Standardwerte.
Hinweise
Wenn Ihre Steuerelementklasse von IPropertyNotifySink abgeleitet ist, ruft diese Methode CFirePropNotifyEvent::FireOnChanged auf, um alle verbundenen IPropertyNotifySink
Schnittstellen zu benachrichtigen, dass die angegebene Steuerelementeigenschaft geändert wurde. Wenn die Steuerelementklasse nicht von IPropertyNotifySink
dieser abgeleitet wird, gibt diese Methode S_OK zurück.
Diese Methode kann auch dann nicht aufgerufen werden, wenn Ihr Steuerelement Verbindungspunkte nicht unterstützt.
Beispiel
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
Benachrichtigt die Spüle des Containers, dass sich eine Steuerelementeigenschaft ändert und dass das Objekt die Spüle fragt, wie die Spüle fortgesetzt werden soll.
HRESULT FireOnRequestEdit(DISPID dispID);
Parameter
dispID
[in] Bezeichner der Eigenschaft, die geändert werden soll.
Rückgabewert
Einer der HRESULT-Standardwerte.
Hinweise
Wenn Ihre Steuerelementklasse von IPropertyNotifySink abgeleitet wird, ruft diese Methode CFirePropNotifyEvent::FireOnRequestEdit auf, um alle verbundenen IPropertyNotifySink
Schnittstellen zu benachrichtigen, dass die angegebene Steuerelementeigenschaft sich ändert. Wenn die Steuerelementklasse nicht von IPropertyNotifySink
dieser abgeleitet wird, gibt diese Methode S_OK zurück.
Diese Methode kann auch dann nicht aufgerufen werden, wenn Ihr Steuerelement Verbindungspunkte nicht unterstützt.
Beispiel
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
Rufen Sie diese Methode auf, um ein Meldungsfeld zu erstellen, anzuzeigen und zu betreiben.
int MessageBox(
LPCTSTR lpszText,
LPCTSTR lpszCaption = _T(""),
UINT nType = MB_OK);
Parameter
lpszText
Der text, der im Meldungsfeld angezeigt werden soll.
lpszCaption
Der Titel des Dialogfelds. Wenn NULL (Standardeinstellung) der Titel "Error" verwendet wird.
nType
Gibt den Inhalt und das Verhalten des Dialogfelds an. Eine Liste der verfügbaren Meldungsfelder finden Sie im MessageBox-Eintrag in der Windows SDK-Dokumentation. Der Standardwert stellt eine einfache SCHALTFLÄCHE "OK " bereit.
Rückgabewert
Gibt einen ganzzahligen Wert zurück, der einen der unter MessageBox in der Windows SDK-Dokumentation aufgeführten Menüelementwerte angibt.
Hinweise
MessageBox
ist sowohl während der Entwicklung als auch als einfache Möglichkeit zum Anzeigen eines Fehlers oder einer Warnmeldung für den Benutzer nützlich.
Siehe auch
CWindowImpl-Klasse
Klassenübersicht
CComControlBase-Klasse
CComCompositeControl-Klasse