MFC-ActiveX-Steuerelemente: Hinzufügen von vordefinierten Eigenschaften
Vordefinierte Eigenschaften unterscheiden sich von benutzerdefinierten Eigenschaften, da sie bereits über die Klasse COleControl implementiert werden. COleControl enthält vordefinierte Memberfunktionen, die allgemeine Eigenschaften für das Steuerelement unterstützen. Einige allgemeine Eigenschaften enthalten die Beschriftung des Steuerelements und der Vordergrund- und Hintergrundfarben. Informationen über andere vordefinierte Eigenschaften, finden Sie unter Vordefinierte Eigenschaften unterstützt im Assistenten zum Hinzufügen von Eigenschaften weiter unten in diesem Artikel. Die Dispatchzuordnungseinträge für vordefinierte Eigenschaften werden immer von DISP_STOCKPROP vorangestellt.
Dieser Artikel wird beschrieben, wie Sie eine vordefinierte Eigenschaft (in diesem Fall, Beschriftung) einem ActiveX-Steuerelement mithilfe des Assistenten zum Hinzufügen von Eigenschaften hinzufügt und beschreibt die resultierenden Codeänderungen. Folgende Themen werden behandelt:
Mit dem Assistenten zum Hinzufügen von Eigenschaften, um eine vordefinierte Eigenschaft hinzuzufügen
Assistent zum Hinzufügen von Eigenschaftenen-Änderungen für vordefinierte Eigenschaften
Vordefinierte Eigenschaften unterstützt im Assistenten zum Hinzufügen von Eigenschaften
Vordefinierte Eigenschaften und Benachrichtigung
Farbeigenschaften
Hinweis
Visual Basic-benutzerdefinierteSteuerelemente haben normalerweise Eigenschaften wie oberen, linken, Breite, Höhe, stimmen überein, kennzeichnen, benennen, -, Tabulation und übergeordnete Element.ActiveX-Steuerelementcontainer sind jedoch für das Implementieren dieser Steuerelementeigenschaften zuständig und daher sollten ActiveX-Steuerelemente diese Eigenschaften nicht unterstützen.
Mit dem Assistenten zum Hinzufügen von Eigenschaften, um eine vordefinierte Eigenschaft hinzuzufügen
Das Hinzufügen vordefinierter Eigenschaften erfordert weniger Code als, benutzerdefinierten Eigenschaften hinzufügen, da Unterstützung für die Eigenschaft automatisch von COleControl behandelt wird. Die folgende Prozedur veranschaulicht das Hinzufügen vordefinierter Beschriftungseigenschaft zu einem ActiveX-Steuerelement-Framework und kann auch verwendet werden, um andere vordefinierte Eigenschaften hinzuzufügen. Ersetzen Sie den ausgewählten vordefinierten Eigenschaftennamen für Beschriftung.
So der vordefinierten Beschriftungseigenschaft mit dem Assistenten zum Hinzufügen von Eigenschaften hinzufügen
Laden Sie das Projekt des Steuerelements.
Erweitern Sie in der Klassenansicht den Bibliotheksknoten des Steuerelements.
Klicken Sie auf den Schnittstellenknoten für das Steuerelement (der zweite Knoten des Bibliotheksknotens) mit der rechten Maustaste um das Kontextmenü zu öffnen.
Klicken Sie im Kontextmenü auf Hinzufügen und dann auf Eigenschaft hinzufügen.
Dadurch wird unter Assistent zum Hinzufügen von Eigenschaften.
Im Feld Eigenschaftenname klicken Sie auf Beschriftung.
Klicken Sie auf Fertig stellen.
Assistent zum Hinzufügen von Eigenschaftenen-Änderungen für vordefinierte Eigenschaften
Da COleControl Stützvordefinierte Eigenschaften, dem Assistenten zum Hinzufügen von Eigenschaften nicht die Klassendeklaration in jeder Hinsicht geändert; fügt sie der Eigenschaft der Dispatchzuordnung hinzu. Der Assistent zum Hinzufügen von Eigenschaften wird die folgende Zeile der Dispatchzuordnung des Steuerelements hinzu, das in der Implementierungsdatei (.CPP) ist:
DISP_STOCKPROP_CAPTION()
In der folgenden Zeile wird Ihrer Schnittstellenbeschreibung der Datei des Steuerelements (.IDL) hinzugefügt:
[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;
Diese Zeile weist der Beschriftungseigenschaft eine bestimmte ID zu Beachten Sie, dass die Eigenschaft bereit ist und Berechtigung von der Datenbank anfordern wird, bevor der Wert geändert wird.
Dies macht die Beschriftungseigenschaft verfügbar für Benutzer des Steuerelements. Um den Wert einer vordefinierten Eigenschaft zu verwenden, greifen Sie eine Membervariable oder eine Memberfunktion COleControl der Basisklasse zu. Weitere Informationen zu dieser Membervariablen und Memberfunktionen, finden Sie im nächsten Abschnitt, vorrätigen Artikel die Eigenschaften, die vom Assistenten zum Hinzufügen von Eigenschaften unterstützt werden.
Auf Lager Sie die Eigenschaften, die vom Assistenten zum Hinzufügen von Eigenschaften unterstützt werden
Die COleControl-Klasse stellt neun vordefinierte Eigenschaften. Sie können die Eigenschaften hinzufügen, die Sie benötigen, indem Sie den Assistenten zum Hinzufügen von Eigenschaften verwenden.
Eigenschaft |
Dispatchzuordnungseintrag |
Wie auf Wert zugreift |
---|---|---|
Darstellung |
DISP_STOCKPROP_APPEARANCE() |
Wert zugreifbar als m_sAppearance. |
BackColor |
DISP_STOCKPROP_BACKCOLOR() |
Wert verfügbar über das Aufrufen von GetBackColor. |
BorderStyle |
DISP_STOCKPROP_BORDERSTYLE() |
Wert zugreifbar als m_sBorderStyle. |
Beschriftung |
DISP_STOCKPROP_CAPTION() |
Wert verfügbar über das Aufrufen von InternalGetText. |
Aktiviert |
DISP_STOCKPROP_ENABLED() |
Wert zugreifbar als m_bEnabled. |
Schriftart |
DISP_STOCKPROP_FONT() |
Siehe den Artikel MFC-ActiveX-Steuerelemente: Verwenden der Schriftarten zur Verwendung. |
ForeColor |
DISP_STOCKPROP_FORECOLOR() |
Bewerten Sie verfügbar, indem Sie GetForeColor aufrufen. |
hWnd |
DISP_STOCKPROP_HWND() |
Bewerten Sie leicht als m_hWnd. |
Text |
DISP_STOCKPROP_TEXT() |
Wert verfügbar über das Aufrufen von InternalGetText. Diese Eigenschaft ist die Beschriftung entspricht, außer dem Eigenschaftennamen. |
ReadyState |
DISP_STOCKPROP_READYSTATE() |
Wert zugreifbar als m_lReadyState oder GetReadyState |
Vordefinierte Eigenschaften und Benachrichtigung
Die meisten Eigenschaften verfügen vordefinierten Benachrichtigungsfunktionen, die überschrieben werden können. Beispielsweise wenn die BackColor-Eigenschaft geändert wird, wird die OnBackColorChanged-Funktion (eine Memberfunktion der Steuerelementklasse) bezeichnet. Die Standardimplementierung (in COleControl) ruft InvalidateControl auf. Überschreiben Sie diese Funktion, wenn Sie zusätzliche Aktionen als Reaktion auf diese Situation reagieren möchten.
Farbeigenschaften
Sie können vordefinierte ForeColor und die Eigenschaften BackColor verwenden oder eigene benutzerdefinierte Farbeigenschaften, wenn Sie das Steuerelement zeichnen. Um eine Farbeigenschaft zu verwenden, erhalten Sie die Memberfunktion COleControl::TranslateColor auf. Die Parameter dieser Funktion sind der Wert die Farbeigenschaft und ein optionales Palettenhandle. Der Rückgabewert ist ein COLORREF-Wert, der an GDI-Funktionen, wie SetTextColor und CreateSolidBrush übergeben werden kann.
Auf die Farbwerte für vordefinierte ForeColor und die BackColor-Eigenschaften zugegriffen werden, indem entweder GetForeColor oder die GetBackColor-Funktion, die jeweils aufgerufen wird.
Im folgenden Beispiel wird mit diesen beiden Farbeigenschaften, wenn ein Steuerelement gezeichnet wird. Es initialisiert eine temporäre Variable und COLORREF ein CBrush-Objekt durch Aufrufe von TranslateColor: ein mit der ForeColor-Eigenschaft und die andere mit der BackColor-Eigenschaft. Ein temporäres CBrush-Objekt wird dann verwendet, um das Rechteck des Steuerelements zu zeichnen, und Textfarbe wird mithilfe der ForeColor-Eigenschaft 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);