MFC-ActiveX-Steuerelemente: Hinzufügen von benutzerdefinierten Methoden
Benutzerdefinierte Methoden unterscheiden sich von vordefinierten Methoden darin, dass sie nicht bereits von COleControl implementiert werden.Sie müssen eine benutzerdefinierte Implementierung für die Methode bereitstellen, die Sie dem Steuerelement hinzufügen.
Ein ActiveX-Steuerelement-Benutzer kann jederzeit eine benutzerdefinierte Methode aufrufen, um steuerelementspezifische Aktionen auszuführen.Der Eintrag für benutzerdefinierte Methoden Dispatchzuordnungs hat die Form DISP_FUNCTION.
Eine benutzerdefinierte Methode mit dem Assistenten zum Hinzufügen von Methoden hinzufügen
Die folgende Prozedur veranschaulicht das Hinzufügen der benutzerdefinierten - Methode PtInCircle zu einem Codeskelett ActiveX-Steuer.Innerhalb PtInCircle bestimmt, ob die Koordinaten, die dem übergebenen Steuerelement oder außerhalb des Kreises sind.Diese gleiche Verfahren kann auch verwendet werden, um andere benutzerdefinierte Methoden hinzuzufügen.Ersetzen Sie den benutzerdefinierten Methodennamen und seine Parameter für den Namen PtInCircle-Methoden und den angegebenen Parametern.
Hinweis |
---|
In diesem Beispiel wird die InCircle-Funktion aus den Artikel Ereignissen.Weitere Informationen über dieses Feature finden Sie im Artikel MFC-ActiveX-Steuerelemente: Benutzerdefinierte Ereignisse zu einem ActiveX-Steuerelement hinzufügen. |
So PtInCircle die benutzerdefinierte Methode mit dem Assistenten zum Hinzufügen von Methoden hinzufügen
Laden Sie das Projekt des Steuerelements.
Erweitern Sie in der Klassenansicht den Knoten Bibliothek des Steuerelements.
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.
Klicken Sie im Kontextmenü auf Hinzufügen und klicken Sie dann auf Methode hinzufügen.
Dadurch wird der Assistent zum Hinzufügen von Methoden.
Im Methodenname Feld Typ PtInCircle.
Geben Sie im Feld Interner Name Geben Sie den Namen der inneren Funktion der Methode ein, oder verwenden Sie den Standardwert (in diesem Fall PtInCircle).
Im Feld Rückgabetyp auf VARIANT_BOOL für den Rückgabetyp der Methode.
Verwenden von Parametertyp und Parametername-Steuerelementen fügen Sie einen Parameter hinzu, der xCoordOLE_XPOS_PIXELS-Typ () aufgerufen wird.
Verwenden von Parametertyp und Parametername-Steuerelementen fügen Sie einen Parameter hinzu, der yCoordOLE_YPOS_PIXELS-Typ () aufgerufen wird.
Klicken Sie auf Fertig stellen.
Assistent zum Hinzufügen von Methoden für benutzerdefinierte Methodenen-Änderungen
Wenn Sie eine benutzerdefinierte Methode hinzufügen, geht der Assistent zum Hinzufügen von Methoden einige Änderungen am Timeout (Header Steuerelementklassen. H (Dateien) und der Implementierung .CPP).In der folgenden Zeile wird zur Dispatchzuordnungs Steuerelementklassen im Header hinzugefügt (Deklaration. H) Datei:
VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
Dieses Beispiel deklariert eine Weiterleitung - Handler mit dem Namen PtInCircle.Diese Funktion kann vom Benutzer Steuerelements aufgerufen werden, der den externen Namen PtInCircle verwendet.
In der folgenden Zeile wird in die IDL-Datei des Steuerelements hinzugefügt:
[id(1), helpstring("method PtInCircle")] VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
Diese Zeile wird der PtInCircle-Methode eine bestimmte ID-Nummer, um die Position der Methode in den Assistent zum Hinzufügen von Methodenen-Methoden und Eigenschaftenliste auf.Da der Assistent zum Hinzufügen von Methoden verwendet wurde, um die benutzerdefinierte Methode hinzuzufügen, wurde der Eintrag für ihn automatisch in die IDL-Datei des Projekts hinzugefügt.
Darüber hinaus wird die folgende Zeile, in der Implementierungsdatei (.CPP) der Steuerelementklasse in die Dispatchzuordnung 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, PtInCircle, VARIANT_BOOL, um den Rückgabetyp deklariert werden und deklariert zwei Parameter des Typs PtInCircleVTS_YPOSPIXELS und VTS_XPOS_PIXELS übergeben werden sollen.
Schließlich fügt der Assistent zum Hinzufügen von Methoden für die Stub CSampleCtrl::PtInCircle dem unteren Rand der Implementierungsdatei des Steuerelements (.CPP) hinzu.Damit PtInCircle funktioniert, wie bereits erwähnt, muss jedoch geändert werden, wie nachfolgend veranschaulicht:
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
Referenz
Symbole in der Klassenansicht und im Objektbrowser