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

CComControlBase

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