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

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

Dieser Artikel beschreibt, wie einer benutzerdefinierten Eigenschaft zum 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 benutzerdefinierte Eigenschaft hinzu

  • Assistent zum Hinzufügen von Eigenschaftenen-Änderungen für benutzerdefinierte Eigenschaften

Benutzerdefinierte Eigenschaften sind in vier Varianten der Implementierung: Membervariablen, Membervariable mit Benachrichtigungen, Get/und Set-Methoden parametrisiert.

  • Membervariablen-Implementierung

    Diese Implementierung wird der Zustand der Eigenschaft als Membervariable in der Steuerelementklasse dar. Verwenden Sie die Membervariablenimplementierung, wenn es nicht wichtig ist, zu wissen, wann der Eigenschaftswert ändert. Von den drei Typen erstellt dieser Implementierung die wenigsten Menge Stützcodes für die Eigenschaft. Das Dispatchzuordnungseintragsmakro für Membervariablenimplementierung ist DISP_PROPERTY.

  • Membervariable mit Benachrichtigungs-Implementierung

    Diese Implementierung wird eine Membervariable und einer Benachrichtigungsfunktion, die vom Assistenten zum Hinzufügen von Eigenschaften erstellt werden. Die Benachrichtigungsfunktion wird automatisch vom Framework aufgerufen, nachdem der Eigenschaftswert ändert. Verwenden Sie die Membervariable mit Benachrichtigungsimplementierung, wenn Sie benachrichtigt werden, nachdem ein Eigenschaftswert geändert wurde. Diese Implementierung erfordert mehr Zeit, da sie einen Funktionsaufruf erfordert. Das Dispatchzuordnungseintragsmakro für diese Implementierung ist DISP_PROPERTY_NOTIFY.

  • Get/Set-Methoden-Implementierung

    Diese Implementierung besteht aus einem Memberfunktionen in der Steuerelementklasse. Die Get/Set-Methodenimplementierung wird automatisch die Abrufensmemberfunktion auf, wenn der Benutzer anfordert des Steuerelements der aktuelle Wert der Eigenschaft und der festgelegte Member wenn die Benutzeranforderungen des Steuerelements arbeiten, die die Eigenschaft geändert wird. Verwenden Sie diese Implementierung, wenn Sie den Wert einer Eigenschaft während der Laufzeit berechnen, einen Wert überprüfen müssen, der vom Benutzer des Steuerelements übergeben wird, bevor die tatsächliche Eigenschaft ändern, oder einen gelesenen oder lesegeschützter Eigenschaft Typ implementieren. Das Dispatchzuordnungseintragsmakro für diese Implementierung ist DISP_PROPERTY_EX. Der folgende Abschnitt, Mit dem Assistenten zum Hinzufügen von Eigenschaften, um eine benutzerdefinierte Eigenschaft hinzu, wird die benutzerdefinierte Eigenschaft CircleOffset, diese Implementierung zu veranschaulichen.

  • Parametrisierte Implementierung

    Parametrisierte Implementierung wird im Assistenten zum Hinzufügen von Eigenschaften unterstützt. Eine parametrisierte Eigenschaft (gelegentlich aufgerufen ein Eigenschaftenarray) kann verwendet werden, um einen Satz von Werten auf eine einzelne Eigenschaft des Steuerelements zuzugreifen. Das Dispatchzuordnungseintragsmakro für diese Implementierung ist DISP_PROPERTY_PARAM. Weitere Informationen zum Implementieren dieses Typs, finden Sie im Artikel Implementieren einer parametrisierten Eigenschaft in ActiveX-Steuerelemente: Weiterführende Themen.

Mit dem Assistenten zum Hinzufügen von Eigenschaften, um eine benutzerdefinierte Eigenschaft hinzu

Die folgende Prozedur veranschaulicht das Hinzufügen einer benutzerdefinierten Eigenschaft, CircleOffset, das die Get/Set-Methodenimplementierung verwendet. Die benutzerdefinierte CircleOffset Eigenschaft können Benutzer des Steuerelements, um den Kreis vom Mittelpunkt des umgebenden Rechtecks des Steuerelements. Die Verfahren zum Hinzufügen von benutzerdefinierten Eigenschaften mit einer Implementierung als Get/Set-Methoden ist sehr ähnlich.

Derselbe Prozedur kann auch verwendet werden, um andere benutzerdefinierte Eigenschaften hinzuzufügen, werden. Ersetzen Sie den benutzerdefinierten Eigenschaftennamen für den Eigenschaftennamen und die Parameter CircleOffset.

So fügen die benutzerdefinierte Eigenschaft CircleOffset mit dem Assistenten zum Hinzufügen von Eigenschaften hinzufügen

  1. Laden Sie das Projekt des Steuerelements.

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

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

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

    Dadurch wird unter Assistent zum Hinzufügen von Eigenschaften.

  5. Im Feld Eigenschaftenname geben Sie CircleOffset ein.

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

  7. Im Feld Eigenschaftentyp die Option short aus.

  8. Eindeutige Namen des Typs für das rufen Funktionen ab und legen fest oder übernehmen die Standardnamen.

  9. Klicken Sie auf Fertig stellen.

Assistent zum Hinzufügen von Eigenschaftenen-Änderungen für benutzerdefinierte Eigenschaften

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

Die folgenden Zeilen werden hinzugefügt. H-Datei, von zwei Funktionen zu deklarieren dem Namen GetCircleOffset und SetCircleOffset auf:

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

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

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

Diese Zeile weist der CircleOffset-Eigenschaft ein die bestimmte ID-Nummer zu, aufgezeichnet von der Position der Methode in Methoden und in der Liste des Assistenten zum Hinzufügen von Eigenschaften.

Außerdem wird die folgende Zeile in die Dispatchzuordnung (in die CPP-Datei der Steuerelementklasse) hinzugefügt um der CircleOffset-Eigenschaft an Handlerfunktionen des Steuerelements zwei zuzuweisen:

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

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

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, Text der festgelegten Funktion hinzufügt. Diese Funktion aufrufen, markiert das Steuerelement, z geändert. Wenn ein Steuerelement geändert wurde, wird sein neuen Zustand gespeichert, wenn der Container gespeichert wird. Diese Funktion sollte aufgerufen werden, wenn eine Eigenschaft gespeichert worden als Teil des dauerhaften Zustands des Steuerelements, Änderungswert.

Siehe auch

Referenz

COleControl-Klasse

Konzepte

MFC-ActiveX-Steuerelemente

MFC-ActiveX-Steuerelemente: Eigenschaften

MFC-ActiveX-Steuerelemente: Methoden