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 CComCompositeControl
Klasse 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 CComCompositeControl
Zugriffstaste 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
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