Freigeben über


CComCompositeControl-Klasse

Diese Klasse stellt die Methoden bereit, die zum Implementieren eines zusammengesetzten Steuerelements erforderlich sind.

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 CComCompositeControl : public CComControl<T,CAxDialogImpl<T>>

Parameter

T
Ihre Von CComObjectRoot oder CComObjectRootEx abgeleitete Klasse sowie alle anderen Schnittstellen, die Sie für Ihr zusammengesetztes Steuerelement unterstützen möchten.

Member

Öffentliche Konstruktoren

Name Beschreibung
CComCompositeControl::CComCompositeControl Der Konstruktor.
CComCompositeControl::~CComCompositeControl Der Destruktor.

Öffentliche Methoden

Name Beschreibung
CComCompositeControl::AdviseSinkMap Rufen Sie diese Methode auf, um alle vom zusammengesetzten Steuerelement gehosteten Steuerelemente zu beraten oder zu aufheben.
CComCompositeControl::CalcExtent Rufen Sie diese Methode auf, um die Größe in HIMETRIC-Einheiten der Dialogressource zu berechnen, die zum Hosten des zusammengesetzten Steuerelements verwendet wird.
CComCompositeControl::Create Diese Methode wird aufgerufen, um das Steuerelementfenster für das zusammengesetzte Steuerelement zu erstellen.
CComCompositeControl::CreateControlWindow Rufen Sie diese Methode auf, um das Steuerelementfenster zu erstellen und alle gehosteten Steuerelemente zu empfehlen.
CComCompositeControl::SetBackgroundColorFromAmbient Rufen Sie diese Methode auf, um die Hintergrundfarbe des zusammengesetzten Steuerelements mithilfe der Hintergrundfarbe des Containers festzulegen.

Öffentliche Datenmember

Name Beschreibung
CComCompositeControl::m_hbrBackground Der Hintergrundpinsel.
CComCompositeControl::m_hWndFocus Das Handle des Fensters, das derzeit den Fokus besitzt.

Hinweise

Von der Klasse CComCompositeControl abgeleitete Klassen erben die Funktionalität eines Zusammengesetzten ActiveX-Steuerelements. Von einem Standarddialogfeld abgeleitete CComCompositeControl ActiveX-Steuerelemente werden gehostet. Diese Arten von Steuerelementen werden als zusammengesetzte Steuerelemente bezeichnet, da sie andere Steuerelemente hosten können (systemeigene Windows-Steuerelemente und ActiveX-Steuerelemente).

CComCompositeControl identifiziert die Dialogressource zum Erstellen des zusammengesetzten Steuerelements, indem nach einem aufgezählten Datenmemmemm in der untergeordneten Klasse gesucht wird. Die Member-IDD dieser untergeordneten Klasse wird auf die Ressourcen-ID der Dialogressource festgelegt, die als Fenster des Steuerelements verwendet wird. Im Folgenden sehen Sie ein Beispiel für das Datenmemm, von dem die von der Klasse abgeleitete CComCompositeControl Klasse enthalten soll, um die Dialogressource zu identifizieren, die für das Fenster des Steuerelements verwendet werden soll:

enum { IDD = IDD_MYCOMPOSITE };

Hinweis

Zusammengesetzte Steuerelemente sind immer Fenstersteuerelemente, obwohl sie fensterlose Steuerelemente enthalten können.

Ein von einer abgeleiteten CComCompositeControlKlasse implementiertes Steuerelement verfügt über ein standardmäßiges Tabulatorverhalten. Wenn das Steuerelement den Fokus erhält, indem es in einer enthaltenden Anwendung tabstopps ist, bewirkt das aufeinander folgende Drücken der TAB-TASTE, dass der Fokus durch alle enthaltenen Steuerelemente des zusammengesetzten Steuerelements durchlaufen wird, dann aus dem zusammengesetzten Steuerelement und dem nächsten Element in der Aktivierreihenfolge des Containers. Die Aktivierreihenfolge der gehosteten Steuerelemente wird von der Dialogressource bestimmt und bestimmt die Reihenfolge, in der tabbing erfolgt.

Hinweis

Damit Zugriffstasten ordnungsgemäß mit einer CComCompositeControlZugriffstaste funktionieren, ist es erforderlich, eine Zugriffstastentabelle zu laden, während das Steuerelement erstellt wird, das Handle und die Anzahl der Zugriffstasten wieder an IOleControlImpl::GetControlInfo zu übergeben und schließlich die Tabelle zu zerstören, wenn das Steuerelement freigegeben wird.

Beispiel

// Example for overriding IOleControlImpl::GetControlInfo()
// This example uses the accelerator table from the project resources
// with the identifier IDR_ACCELTABLE
// Define GetControlInfo() in the header of your composite 
// control class as follows:

STDMETHOD(GetControlInfo)(CONTROLINFO* pCI)
{
    // Load the accelerator table from the resource
    pCI->hAccel = LoadAccelerators(_AtlBaseModule.GetResourceInstance(), 
       MAKEINTRESOURCE(IDR_ACCELTABLE));

    if (pCI->hAccel == NULL)
        return E_FAIL;

    // Get the number of accelerators in the table
    pCI->cAccel = (USHORT)CopyAcceleratorTable(pCI->hAccel, NULL, 0);
    // The following is optional if you want your control
    // to process the return and/or escape keys
    // pCI.dwFlags = CTRLINFO_EATS_RETURN | CTRLINFO_EATS_ESCAPE;
    pCI->dwFlags = 0;

    return S_OK;
}

Vererbungshierarchie

WinBase

CComControlBase

CComControl

CComCompositeControl

Anforderungen

Header: atlctl.h

CComCompositeControl::AdviseSinkMap

Rufen Sie diese Methode auf, um alle vom zusammengesetzten Steuerelement gehosteten Steuerelemente zu beraten oder zu aufheben.

HRESULT AdviseSinkMap(bool bAdvise);

Parameter

bAdvise
True, wenn alle Steuerelemente empfohlen werden sollen; andernfalls "false".

Rückgabewert

Wert Beschreibung
S_OK Alle Steuerelemente in der Ereignissenkenzuordnung wurden erfolgreich verbunden oder von der Ereignisquelle getrennt.
E_FAIL Nicht alle Steuerelemente in der Ereignissenkezuordnung konnten erfolgreich mit ihrer Ereignisquelle verbunden oder getrennt werden.
E_POINTER Dieser Fehler weist in der Regel auf ein Problem mit einem Eintrag in der Ereignissenkezuordnung des Steuerelements oder auf ein Problem mit einem Vorlagenargument hin, das in einer IDispEventImpl oder IDispEventSimpleImpl einer Basisklasse verwendet wird.
CONNECT_E_ADVISELIMIT Der Verbindungspunkt hat seine Verbindungsgrenze bereits erreicht und kann nicht mehr annehmen.
CONNECT_E_CANNOTCONNECT Die Spüle unterstützt die von diesem Verbindungspunkt erforderliche Schnittstelle nicht.
CONNECT_E_NOCONNECTION Der Cookiewert stellt keine gültige Verbindung dar. Dieser Fehler weist in der Regel auf ein Problem mit einem Eintrag in der Ereignissenkezuordnung des Steuerelements oder auf ein Problem mit einem Vorlagenargument hin, das in einer IDispEventImpl oder IDispEventSimpleImpl einer Basisklasse verwendet wird.

Hinweise

Die Basisimplementierung dieser Methode durchsucht die Einträge in der Ereignissenkenzuordnung. Anschließend wird die Verbindung mit den COM-Objekten empfohlen oder deaktiviert, die von den Sinkeinträgen der Ereignissenkekarte beschrieben werden. Diese Membermethode basiert auch darauf, dass die abgeleitete Klasse von einer Instanz jedes IDispEventImpl Steuerelements in der Senkenzuordnung erbt, das empfohlen oder nicht überwacht werden soll.

CComCompositeControl::CalcExtent

Rufen Sie diese Methode auf, um die Größe in HIMETRIC-Einheiten der Dialogressource zu berechnen, die zum Hosten des zusammengesetzten Steuerelements verwendet wird.

BOOL CalcExtent(SIZE& size);

Parameter

size
Ein Verweis auf eine SIZE Struktur, die von dieser Methode ausgefüllt werden soll.

Rückgabewert

TRUE, wenn das Steuerelement in einem Dialogfeld gehostet wird; andernfalls FALSE.

Hinweise

Die Größe wird im Parameter "size " zurückgegeben.

CComCompositeControl::Create

Diese Methode wird aufgerufen, um das Steuerelementfenster für das zusammengesetzte Steuerelement zu erstellen.

HWND Create(
    HWND hWndParent,
    RECT& /* rcPos */,
    LPARAM dwInitParam = NULL);

Parameter

hWndParent
Ein Handle für das übergeordnete Fenster des Steuerelements.

rcPos
Reserviert.

dwInitParam
Daten, die beim Erstellen von Steuerelementen an das Steuerelement übergeben werden sollen. Die als dwInitParam übergebenen Daten werden als LPARAM-Parameter der WM_INITDIALOG Nachricht angezeigt, die beim Erstellen an das zusammengesetzte Steuerelement gesendet wird.

Rückgabewert

Ein Handle für das neu erstellte zusammengesetzte Steuerelementdialogfeld.

Hinweise

Diese Methode wird in der Regel während der direkten Aktivierung des Steuerelements aufgerufen.

CComCompositeControl::CComCompositeControl

Der Konstruktor.

CComCompositeControl();

Hinweise

Initialisiert die CComCompositeControl::m_hbrBackground - und CComCompositeControl::m_hWndFocus-Datenmmber in NULL.

CComCompositeControl::~CComCompositeControl

Der Destruktor.

~CComCompositeControl();

Hinweise

Löscht das Hintergrundobjekt, sofern vorhanden.

CComCompositeControl::CreateControlWindow

Rufen Sie diese Methode auf, um das Steuerelementfenster zu erstellen und gehostete Steuerelemente zu empfehlen.

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

Parameter

hWndParent
Ein Handle für das übergeordnete Fenster des Steuerelements.

rcPos
Das Positionsrechteck des zusammengesetzten Steuerelements in Clientkoordinaten relativ zu hWndParent.

Rückgabewert

Gibt ein Handle an das neu erstellte zusammengesetzte Steuerelementdialogfeld zurück.

Hinweise

Diese Methode ruft CComCompositeControl::Create and CComCompositeControl::AdviseSinkMap auf.

CComCompositeControl::m_hbrBackground

Der Hintergrundpinsel.

HBRUSH m_hbrBackground;

CComCompositeControl::m_hWndFocus

Das Handle des Fensters, das derzeit den Fokus besitzt.

HWND m_hWndFocus;

CComCompositeControl::SetBackgroundColorFromAmbient

Rufen Sie diese Methode auf, um die Hintergrundfarbe des zusammengesetzten Steuerelements mithilfe der Hintergrundfarbe des Containers festzulegen.

HRESULT SetBackgroundColorFromAmbient();

Rückgabewert

S_OK bei Erfolg, ein HRESULT-Fehler bei einem Fehlschlag.

Siehe auch

CComControl-Klasse
Grundlagen von zusammengesetzten Steuerelementen
Klassenübersicht