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

Benutzerdefinierte Eigenschaften unterscheiden sich von vordefinierten Eigenschaften in diesem benutzerdefinierten Eigenschaften werden nicht bereits durch die Implementierung COleControl-Klasse.Eine benutzerdefinierte Eigenschaft wird verwendet, um einen bestimmten Zustand oder eine Darstellung eines ActiveX-Steuerelements ein Programmierer verfügbar zu machen, der das Steuerelement verwendet.

In diesem Artikel wird beschrieben, wie eine benutzerdefinierte Eigenschaft dem ActiveX-Steuerelement mithilfe des Assistenten zum Hinzufügen von Eigenschaften hinzufügt und beschreibt die resultierenden Code geändert wird.Folgende Themen werden behandelt:

  • Verwenden des Assistenten zum Hinzufügen von Eigenschaften zum Hinzufügen einer benutzerdefinierten Eigenschaft

  • Assistent zum Hinzufügen von Eigenschaften zur benutzerdefinierten Eigenschaftenen-Änderungen

Benutzerdefinierte Eigenschaften werden in vier Arten der Implementierung: Membervariable Membervariable mit Benachrichtigung, Get/Set-Methoden und parametrisiert.

  • Membervariablen-Implementierung

    Diese Implementierung stellt den Zustand der Eigenschaft als Membervariable in der Steuerelementklasse dar.Verwenden Sie die Membervariablen Implementierung, wenn keine festzustellen, wann der Eigenschaftswert ändert.Von den drei Typen erstellt diese Implementierung, die Menge des Codes für die Eigenschaft.Das Dispatchzuordnungs Zieleintrags Makro für Membervariablen Implementierung ist DISP_PROPERTY.

  • Membervariable mit Benachrichtigungs-Implementierung

    Diese Implementierung besteht aus einer Membervariablen und einer Benachrichtigungsfunktion, die vom Assistenten zum Hinzufügen von Eigenschaften erstellt werden.Die Benachrichtigungsfunktion werden automatisch vom Framework aufgerufen, nachdem der Eigenschaftswert ändert.Verwenden Sie die Membervariable mit Benachrichtigung Implementierung, wenn Sie benachrichtigt werden möchten, wenn ein Eigenschaftswert geändert hat.Diese Implementierung erfordert mehr Zeit, da sie einen Funktionsaufruf erfordert.Das Dispatchzuordnungs Zieleintrags Makro für diese Implementierung ist DISP_PROPERTY_NOTIFY.

  • Get/Set-Methoden-Implementierung

    Diese Implementierung besteht aus einem Paar von Memberfunktionen in der Steuerelementklasse.Die Get/Set-Methoden ruft automatisch die Implementierung des Abrufens Memberfunktion einer auf, wenn der Benutzer die Hilfe des Steuerelements der aktuelle Wert der Eigenschaft und der festgelegte Member wenn der Benutzer die Hilfe des Steuerelements arbeiten, die die Eigenschaft geändert wird.Mit dieser Implementierung, wenn Sie den Wert einer Eigenschaft zur Laufzeit einen Wert berechnen, überprüfen müssen, der vom Benutzer des Steuerelements übergeben wird, bevor die tatsächliche Eigenschaft ändern oder einen gelesenen oder einer lesegeschützten Eigenschaft Typ implementieren.Das Dispatchzuordnungs Zieleintrags Makro für diese Implementierung ist DISP_PROPERTY_EX.Der folgende Abschnitt Verwenden des Assistenten zum Hinzufügen von Eigenschaften zum Hinzufügen einer benutzerdefinierten Eigenschaft, verwendet die benutzerdefinierte Eigenschaft CircleOffset, um diese Implementierung zu veranschaulichen.

  • Parametrisierte Implementierung

    Parametrisierte Implementierung wird vom Assistenten zum Hinzufügen von Eigenschaften unterstützt.Eine parametrisierte Eigenschaft (gelegentlich bezeichnet ein Zeichenfolgenarray Eigenschaft) kann verwendet werden, um eine Gruppe von Werten von einer einzelnen Eigenschaft des Steuerelements zuzugreifen.Das Dispatchzuordnungs Zieleintrags Makro für diese Implementierung ist DISP_PROPERTY_PARAM.Weitere Informationen zum Implementieren dieses Typs finden Sie im Artikel in Eine parametrisierte Eigenschaft implementieren ActiveX-Steuerelemente: Erweiterte Themen.

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

Im folgenden Verfahren wird das Hinzufügen einer benutzerdefinierten Eigenschaft CircleOffset, das die Get/Set-Methoden Implementierung verwendet wird.Die benutzerdefinierte Eigenschaft CircleOffset kann der Benutzer des Steuerelements, um den Kreis vom Mittelpunkt des umschließenden Rechtecks des Steuerelements verschoben werden soll.Das Verfahren zum Hinzufügen von benutzerdefinierten Eigenschaften mit einer Implementierung unterschiedlich Get/Set-Methoden ist sehr ähnlich.

Diese gleiche Verfahren kann auch verwendet werden, um andere benutzerdefinierte Eigenschaften hinzuzufügen.Ersetzen Sie den benutzerdefinierten Eigenschaftennamen für den Eigenschaftennamen und den Parametern CircleOffset.

Um die benutzerdefinierte Eigenschaft CircleOffset mithilfe des Assistenten zum Hinzufügen von Eigenschaften hinzufügen

  1. Laden Sie das Projekt des Steuerelements.

  2. Erweitern Sie in der Klassenansicht den Knoten Bibliothek des Steuerelements.

  3. Klicken Sie mit der rechten Maustaste auf den Knoten Schnittstellen für das Steuerelement (der zweite Knoten des Knotens Bibliothek), um das Kontextmenü zu öffnen.

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

    Dadurch wird Assistent zum Hinzufügen von Eigenschaften.

  5. Im Eigenschaftenname Feld Typ CircleOffset.

  6. Für Implementierungstyp Klicken Sie auf Get/Set-Methoden.

  7. Im Eigenschaftentyp Feld den Eintrag short.

  8. Eindeutige Namen des Typs für das Abrufen und legen fest oder Funktionen akzeptieren die Standardnamen.

  9. Klicken Sie auf Fertig stellen.

Assistent zum Hinzufügen von Eigenschaften zur benutzerdefinierten Eigenschaftenen-Änderungen

Wenn Sie die benutzerdefinierte Eigenschaft CircleOffset hinzufügen, geht der Assistent zum Hinzufügen von Eigenschaften Änderungen vor. (Header amH) und die Dateien der Implementierung der Steuerelementklasse (.CPP).

Die folgenden Zeilen hinzugefügt werden. .h-Datei, um die beiden Funktionen zu deklarieren und hat GetCircleOffsetSetCircleOffset an:

SHORT GetCircleOffset(void);
void SetCircleOffset(SHORT newVal);

In der folgenden Zeile wird in die IDL-Datei des Steuerelements hinzugefügt:

[id(2), helpstring("property CircleOffset")] SHORT CircleOffset;
[id(3), helpstring("property MyProperty")] SHORT MyProperty;

Diese Zeile wird der CircleOffset-Eigenschaft ein, auf denen bestimmte ID-Nummer aus der Position der Methode in den Methoden und in der Eigenschaftenliste dem Assistenten zum Hinzufügen von Eigenschaften.

Darüber hinaus wird die folgende Zeile in die Dispatchzuordnung (in der CPP-Datei der Steuerelementklasse) hinzugefügt CircleOffset-Eigenschaft um die Handlerfunktionen des Steuerelements zu den beiden zuzuordnen:

DISP_PROPERTY_EX_ID(CMyAxUICtrl, "CircleOffset", dispidCircleOffset, GetCircleOffset, SetCircleOffset, VT_I2)

Schließlich werden die Implementierungen GetCircleOffset und SetCircleOffset-Funktionen zum Ende der CPP-Datei des Steuerelements hinzugefügt.In den meisten Fällen ändern Sie die Get-Funktion wird der Wert der Eigenschaft zurückgegeben wird.Die festgelegte Funktion enthält normalerweise Code, der ausgeführt werden soll, entweder vor oder nach dem die Eigenschaft geändert wird.

void CMyAxUICtrl::SetCircleOffset(SHORT /*newVal*/)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   // TODO: Add your property handler code here

   SetModifiedFlag();
}

Beachten Sie, dass der Assistent zum Hinzufügen von Eigenschaften automatisch einen Aufruf, SetModifiedFlag, den Text der festgelegten Funktion hinzugefügt wird.Diese Funktion aufgerufen wird, markiert das Steuerelement als geändert.Wenn ein Steuerelement geändert wurde, wird deren aktueller Status gespeichert, wenn der Container gespeichert wird.Diese Funktion sollte aufgerufen werden, wenn eine Eigenschaft gespeichert wurde, als Teil des permanenten Zustand des Steuerelements Wert ändert.

Siehe auch

Referenz

COleControl-Klasse

Konzepte

MFC-ActiveX-Steuerelemente

MFC-ActiveX-Steuerelemente: Eigenschaften

MFC-ActiveX-Steuerelemente: Methoden