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

Benutzerdefinierte Methoden unterscheiden sich von Aktienmethoden, in denen sie noch nicht implementiert COleControlwerden. Sie müssen die Implementierung für jede benutzerdefinierte Methode bereitstellen, die Sie ihrem Steuerelement hinzufügen.

Wichtig

ActiveX ist eine Legacytechnologie, die nicht für neue Software verwendet werden sollte. Weitere Informationen zu modernen Technologien, die ActiveX ablösen, finden Sie unter ActiveX-Steuerelemente.

Ein ActiveX-Steuerelementbenutzer kann jederzeit eine benutzerdefinierte Methode aufrufen, um steuerelementspezifische Aktionen auszuführen. Der Verteilerzuordnungseintrag für benutzerdefinierte Methoden ist das Formular DISP_FUNCTION.

Hinzufügen einer benutzerdefinierten Methode mit dem Assistenten zum Hinzufügen von Methoden

Das folgende Verfahren veranschaulicht das Hinzufügen der benutzerdefinierten Methode PtInCircle zum Skelettcode eines ActiveX-Steuerelements. PtInCircle bestimmt, ob sich die an das Steuerelement übergebenen Koordinaten innerhalb oder außerhalb des Kreises befinden. Dieses Verfahren kann auch zum Hinzufügen anderer benutzerdefinierter Methoden verwendet werden. Ersetzen Sie den Namen der benutzerdefinierten Methode und die zugehörigen Parameter durch den Namen und die Parameter der PtInCircle-Methode.

Hinweis

In diesem Beispiel wird die InCircle Funktion aus dem Artikel "Ereignisse" verwendet. Weitere Informationen zu dieser Funktion finden Sie im Artikel MFC ActiveX-Steuerelemente: Hinzufügen von benutzerdefinierten Ereignissen zu einem ActiveX-Steuerelement.

So fügen Sie die benutzerdefinierte PtInCircle-Methode mithilfe des Assistenten zum Hinzufügen von Methoden hinzu

  1. Laden Sie das Projekt des Steuerelements.

  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 die Option Hinzufügen, und klicken Sie danach auf Methode hinzufügen.

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

  5. Geben Sie im Feld "Methodenname" "PtInCircle" ein.

  6. Geben Sie im Feld "Interner Name " den Namen der internen Funktion der Methode ein, oder verwenden Sie den Standardwert (in diesem Fall PtInCircle).

  7. Klicken Sie im Feld "Rückgabetyp " auf VARIANT_BOOL für den Rückgabetyp der Methode.

  8. Fügen Sie mithilfe der Steuerelemente "Parametertyp" und "Parametername " einen Parameter namens "xCoord " hinzu (Typ OLE_XPOS_PIXELS).

  9. Fügen Sie mithilfe der Steuerelemente "Parametertyp" und "Parametername " einen Parameter namens "yCoord " hinzu (Typ OLE_YPOS_PIXELS).

  10. Klicken Sie auf Fertig stellen.

Hinzufügen von Methoden-Assistentenänderungen für benutzerdefinierte Methoden

Wenn Sie eine benutzerdefinierte Methode hinzufügen, nimmt der Assistent zum Hinzufügen von Methoden einige Änderungen am Steuerelementklassenheader vor (. H) und Implementierung (. CPP)-Dateien. Die folgende Zeile wird der Verteilerzuordnungsdeklaration im Steuerelementklassenheader (. H) Datei:

VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);

Dieser Code deklariert einen Dispatch-Methodenhandler, der aufgerufen wird PtInCircle. Diese Funktion kann vom Steuerelementbenutzer mithilfe des externen Namens PtInCircleaufgerufen werden.

Die folgende Zeile wird der IDL-Datei des Steuerelements hinzugefügt:

[id(1), helpstring("method PtInCircle")] VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);

Diese Zeile weist der PtInCircle Methode eine bestimmte ID-Nummer, die Position der Methode in der Liste der Methoden und Eigenschaften des Assistenten zum Hinzufügen von Methoden und Eigenschaften zu. Da der Assistent zum Hinzufügen der Methode zum Hinzufügen der benutzerdefinierten Methode verwendet wurde, wurde der Eintrag für sie automatisch zum Projekt hinzugefügt. IDL-Datei.

Darüber hinaus befindet sich die folgende Zeile in der Implementierung (. Die CPP-Datei der Steuerelementklasse wird der Verteilerzuordnung des Steuerelements hinzugefügt:

DISP_FUNCTION_ID(CMyAxUICtrl, "PtInCircle", dispidPtInCircle, PtInCircle, VT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)

Das DISP_FUNCTION Makro ordnet die Methode PtInCircle der Handlerfunktion des Steuerelements zu, PtInCircledeklariert den Rückgabetyp als VARIANT_BOOL und deklariert zwei Parameter vom Typ VTS_XPOS_PIXELS und VTS_YPOSPIXELS , an PtInCircledie übergeben werden soll.

Schließlich fügt der Assistent zum Hinzufügen von Methoden die Stubfunktion CSampleCtrl::PtInCircle am Ende der Implementierung des Steuerelements hinzu (. CPP)-Datei. Damit PtInCircle sie wie bereits erwähnt funktioniert, muss sie wie folgt geändert werden:

VARIANT_BOOL CMyAxUICtrl::PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   CPoint point(xCoord, yCoord);
   return InCircle(point);
}

Siehe auch

MFC ActiveX Controls (MFC-ActiveX-Steuerelemente)
Symbole in der Klassenansicht und im Objektbrowser