MFC-ActiveX-Steuerelemente: Zugreifen auf Umgebungseigenschaften

In diesem Artikel wird erläutert, wie ein ActiveX-Steuerelement auf die Umgebungseigenschaften des Steuerelementcontainers zugreifen kann.

Ein Steuerelement kann Informationen zu seinem Container abrufen, indem er auf die Umgebungseigenschaften des Containers zugreift. Diese Eigenschaften machen visuelle Merkmale verfügbar, z. B. die Hintergrundfarbe des Containers, die aktuelle Schriftart, die vom Container verwendet wird, und betriebstechnische Merkmale, z. B. ob sich der Container derzeit im Benutzermodus oder im Designermodus befindet. Ein Steuerelement kann Umgebungseigenschaften verwenden, um sein Aussehen und Verhalten auf den jeweiligen Container anzupassen, in den es eingebettet ist. Ein Steuerelement sollte jedoch niemals davon ausgehen, dass sein Container eine bestimmte Umgebungseigenschaft unterstützt. Tatsächlich unterstützen einige Container überhaupt keine Umgebungseigenschaften. Wenn keine Umgebungseigenschaft vorhanden ist, sollte ein Steuerelement einen angemessenen Standardwert annehmen.

Um auf eine Ambient-Eigenschaft zuzugreifen, rufen Sie COleControl::GetAmbientProperty auf. Diese Funktion erwartet die Dispatch-ID für die Ambient-Eigenschaft als ersten Parameter (die Datei OLECTL). H definiert Verteiler-IDs für den Standardsatz von Umgebungseigenschaften).

Die Parameter der GetAmbientProperty Funktion sind die Dispatch-ID, ein Variant-Tag, das den erwarteten Eigenschaftentyp angibt, und ein Zeiger auf den Speicher, in dem der Wert zurückgegeben werden soll. Der Datentyp, auf den sich dieser Zeiger bezieht, variiert je nach Variant-Tag. Die Funktion gibt WAHR zurück, wenn der Container die Eigenschaft unterstützt. Andernfalls wird FALSE zurückgegeben.

Im folgenden Codebeispiel wird der Wert der Umgebungseigenschaft "UserMode" abgerufen. Wenn die Eigenschaft vom Container nicht unterstützt wird, wird ein Standardwert von TRUE angenommen:

BOOL bUserMode;
if (!GetAmbientProperty(DISPID_AMBIENT_USERMODE, VT_BOOL, &bUserMode))
bUserMode = TRUE;

Stellt Hilfsfunktionen bereit, COleControl die auf viele der häufig verwendeten Umgebungseigenschaften zugreifen und geeignete Standardwerte zurückgeben, wenn die Eigenschaften nicht verfügbar sind. Diese Hilfsfunktionen sind wie folgt:

Wenn sich der Wert einer Umgebungseigenschaft ändert (durch eine aktion des Containers), wird die OnAmbientPropertyChanged Memberfunktion des Steuerelements aufgerufen. Überschreiben Sie diese Memberfunktion, um eine solche Benachrichtigung zu behandeln. Der Parameter für OnAmbientPropertyChanged die Verteiler-ID der betroffenen Umgebungseigenschaft. Der Wert dieser Verteiler-ID kann DISPID_UNKNOWN sein, was angibt, dass eine oder mehrere Umgebungseigenschaften geändert wurden, aber Informationen darüber, welche Eigenschaften betroffen waren, sind nicht verfügbar.

Siehe auch

MFC ActiveX Controls (MFC-ActiveX-Steuerelemente)