MFC-ActiveX-Steuerelemente: Hinzufügen von vordefinierten Eigenschaften

Vordefinierte Eigenschaften unterscheiden sich von benutzerdefinierten Eigenschaften darin, dass sie bereits von der COleControl-Klasse implementiert wurden. COleControl enthält vordefinierte Memberfunktionen, die gängige Eigenschaften für das Steuerelement unterstützen. Einige gängige Eigenschaften umfassen den Titel sowie die Vordergrund- und Hintergrundfarben. Weitere Informationen zu anderen vordefinierten Eigenschaften finden Sie im Abschnitt zu den vom Assistenten zum Hinzufügen von Eigenschaften unterstützten vordefinierten Eigenschaften in diesem Artikel. Den Dispatchzuordnungseinträgen für vordefinierte Eigenschaften wird immer „DISP_STOCKPROP“ vorangestellt.

In diesem Artikel wird beschrieben, wie Sie einem ActiveX-Steuerelement mithilfe des Assistenten zum Hinzufügen von Eigenschaften eine vordefinierte Eigenschaft (hier „Caption“) hinzufügen. Außerdem erfahren Sie mehr über die daraus resultierenden Codeänderungen. Dabei werden folgende Themen behandelt:

Verwenden des Assistenten zum Hinzufügen von Eigenschaften zum Hinzufügen einer vordefinierten Eigenschaft

Das Hinzufügen vordefinierter Eigenschaften erfordert weniger Code als das Hinzufügen benutzerdefinierter Eigenschaften, da die Unterstützung für die Eigenschaft automatisch von COleControl verarbeitet wird. Mit der folgenden Prozedur wird das Hinzufügen der vordefinierten Caption-Eigenschaft zu einem ActiveX-Steuerelementframework veranschaulicht, und es können auch andere vordefinierte Eigenschaften hinzugefügt werden. Ersetzen Sie den Namen der ausgewählten vordefinierten Eigenschaft durch „Caption“.

Hinzufügen der vordefinierten Caption-Eigenschaft mithilfe des Assistenten zum Hinzufügen von Eigenschaften

  1. Laden Sie das Steuerelementprojekt.

  2. Erweitern Sie in der Klassenansicht den Bibliotheksknoten des Steuerelements.

  3. Klicken Sie mit der rechten Maustaste auf den Schnittstellenknoten des Steuerelements (den zweiten Knoten des Bibliotheksknotens), um das Kontextmenü zu öffnen.

  4. Klicken Sie im Kontextmenü auf Hinzufügen und dann auf Eigenschaft hinzufügen.

    Dadurch wird der Assistent zum Hinzufügen von Eigenschaften geöffnet.

  5. Wählen Sie im Feld EigenschaftennameCaption aus.

  6. Klicken Sie auf Fertig stellen.

Änderungen des Assistenten zum Hinzufügen von Eigenschaften für vordefinierte Eigenschaften

Da COleControl vordefinierte Eigenschaften unterstützt, ändert der Assistent zum Hinzufügen von Eigenschaften die Klassendeklaration in keiner Weise. Die Eigenschaft wird der Dispatchzuordnung hinzugefügt. Der Assistent zum Hinzufügen von Eigenschaften fügt der Dispatchzuordnung des Steuerelements, die sich in der Implementierungsdatei (CPP-Datei) befindet, die folgende Zeile hinzu:

DISP_STOCKPROP_CAPTION()

Die folgende Zeile wird der Schnittstellenbeschreibungsdatei (IDL-Datei) für das Steuerelement hinzugefügt:

[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;

Diese Zeile weist der Caption-Eigenschaft eine bestimmte ID zu. Beachten Sie, dass es sich um eine bindbare Eigenschaft handelt, die vor dem Ändern des Werts die Berechtigung von der Datenbank anfordert.

Auf diese Weise wird die Caption-Eigenschaft für Benutzer*innen Ihres Steuerelements verfügbar. Greifen Sie auf eine Membervariable oder Memberfunktion der Basisklasse COleControl zu, um den Wert einer vordefinierten Eigenschaft zu verwenden. Weitere Informationen zu diesen Membervariablen und -funktionen finden Sie im nächsten Abschnitt „Vom Assistenten zum Hinzufügen von Eigenschaften unterstützte vordefinierte Eigenschaften“.

Vom Assistenten zum Hinzufügen von Eigenschaften unterstützte vordefinierte Eigenschaften

Die COleControl-Klasse bietet neun vordefinierte Eigenschaften. Sie können die gewünschten Eigenschaften mithilfe des Assistenten zum Hinzufügen von Eigenschaften hinzufügen.

Eigenschaft Dispatchzuordnungseintrag Zugreifen auf Werte
Appearance DISP_STOCKPROP_APPEARANCE( ) Der Wert ist als m_sAppearance verfügbar.
BackColor DISP_STOCKPROP_BACKCOLOR( ) Wenn Sie GetBackColor aufrufen, wird der Wert verfügbar.
BorderStyle DISP_STOCKPROP_BORDERSTYLE( ) Der Wert ist als m_sBorderStyle verfügbar.
Caption DISP_STOCKPROP_CAPTION( ) Wenn Sie InternalGetText aufrufen, wird der Wert verfügbar.
Enabled DISP_STOCKPROP_ENABLED( ) Der Wert ist als m_bEnabled verfügbar.
Font DISP_STOCKPROP_FONT( ) Informationen zur Verwendung finden Sie im Artikel MFC-ActiveX-Steuerelemente: Verwenden von Schriftarten.
ForeColor DISP_STOCKPROP_FORECOLOR( ) Wenn Sie GetForeColor aufrufen, wird der Wert verfügbar.
hWnd DISP_STOCKPROP_HWND( ) Der Wert ist als m_hWnd verfügbar.
Text DISP_STOCKPROP_TEXT( ) Wenn Sie InternalGetText aufrufen, wird der Wert verfügbar. Diese Eigenschaft entspricht Caption mit Ausnahme des Eigenschaftennamens.
ReadyState DISP_STOCKPROP_READYSTATE() Der Wert ist als m_lReadyState oder GetReadyState verfügbar.

Vordefinierte Eigenschaften und Benachrichtigungen

Die meisten vordefinierten Eigenschaften verfügen über Benachrichtigungsfunktionen, die außer Kraft gesetzt werden können. Immer wenn die Eigenschaft BackColor geändert wird, wird beispielsweise die OnBackColorChanged-Funktion (Memberfunktion der Steuerelementklasse) aufgerufen. Die Standardimplementierung (in COleControl) ruft InvalidateControl auf. Setzen Sie diesen Funktion außer Kraft, wenn Sie als Reaktion auf diese Situation zusätzliche Aktionen ausführen möchten.

Farbeigenschaften

Sie können die vordefinierten Eigenschaften ForeColor und BackColor oder Ihre eigenen benutzerdefinierten Farbeigenschaften verwenden, wenn Sie die Farbe des Steuerelements festlegen. Rufen Sie die Memberfunktion COleControl::TranslateColor auf, um eine Farbeigenschaft zu verwenden. Die Parameter dieser Funktion sind der Wert der Farbeigenschaft und ein optionaler Palettenhandle. Der Rückgabewert ist ein COLORREF-Wert, der an GDI-Funktionen wie SetTextColor und CreateSolidBrush übergeben werden kann.

Sie können auf die Farbwerte für die vordefinierten Eigenschaften ForeColor und BackColor zugreifen, indem Sie entweder die Funktion GetForeColor oder die Funktion GetBackColor aufrufen.

Das folgende Beispiel veranschaulicht die Verwendung dieser beiden Farbeigenschaften beim Festlegen der Farbe eines Steuerelements. Dabei wird eine temporäre COLORREF-Variable und ein CBrush-Objekt mit Aufrufen von TranslateColor instanziiert, wobei bei einem Aufruf die Eigenschaft ForeColor und beim anderen die Eigenschaft BackColor verwendet wird. Ein temporäres CBrush-Objekt wird dann verwendet, um das Rechteck des Steuerelements zu zeichnen, und die Textfarbe wird unter Verwendung der Eigenschaft ForeColor festgelegt.

CBrush bkBrush(TranslateColor(GetBackColor()));
COLORREF clrFore = TranslateColor(GetForeColor());
pdc->FillRect(rcBounds, &bkBrush);
pdc->SetTextColor(clrFore);
pdc->DrawText(InternalGetText(), -1, rcBounds, DT_SINGLELINE | DT_CENTER | DT_VCENTER);

Siehe auch

MFC ActiveX Controls (MFC-ActiveX-Steuerelemente)
MFC-ActiveX-Steuerelemente: Eigenschaften
MFC-ActiveX-Steuerelemente: Methoden
COleControl-Klasse