<< Click to Display Table of Contents >> Navigation: Plug-ins > User-Plug-ins > User-Plug-in erstellen > Eigene Anpassungen des User-Plug-ins |
Für die Anpassung des neu erstellten Plug-ins stehen verschiedene Dateien zur Verfügung. Einige davon sind die Folgenden:
Datei |
Beschreibung |
MeinPluginDll.def |
Auflistung aller Export-Funktionen |
MeinPluginDll.h und MeinPluginDll.cpp |
Implementierung der Plug-in-Funktionalität |
MeinPluginDlg.h und MeinPluginDlg.cpp |
Implementierung des Plug-in-Fensters (Dialog) |
Erläuterung der Dateiinhalte
MeinPluginDll.def:
In dieser sogenannten Moduldefinitionsdatei müssen die Bezeichnungen aller notwendigen und optionalen Export-Funktionen aufgelistet sein. Näheres zu notwendigen und optionalen Export-Funktionen ist im folgenden Kapitel „Export-Funktionen“ verzeichnet.
MeinPluginDll.h und MeinPluginDll.cpp:
In diesen Dateien ist die Klasse CMeinPluginApp definiert. Sie kapselt die Applikationsklasse des Plug-ins, von der es nur eine einzige Instanz gibt. Implementierung der gewünschten Plug-in-Funktionalität vorgesehen. Sie erzeugt ein Objekt der Dialogklasse CMeinPluginDlg und zeigt es an. Durch diese Instanz kann von hier aus auf das Fenster zugegriffen und dieses zur Anzeige gebracht werden.
Des Weiteren müssen in MeinPluginDll.cpp (unabhängig von der Klasse CMeinPluginApp) die Export-Funktionen implementiert sein.
MeinPluginDlg.h und MeinPluginDlg.cpp:
In diesen Dateien ist die Dialog-Klasse CMeinPluginDlg definiert. Sie repräsentiert das Dialog-Fenster und beinhaltet somit alle in diesem Fenster enthaltenen Steuerelemente und die zugehörige Funktionalität.
Die folgenden Tabellen enthalten alle Export-Funktionen. Notwendige Export-Funktionen sind unabdingbar für User-Plug-ins. Ohne diese kann das Plug-in nicht von CanEasy geladen werden. Optionale Export-Funktionen können, sofern der Plug-in-Entwickler keine Verwendung dafür findet, weggelassen werden.
notwendige Export-Funktionen |
|
Bezeichnung |
Beschreibung |
DLL_dwGetAPIVersion |
Dient der CanDll zur Überprüfung der Kompatibilität. Der Inhalt dieser Funktion darf nicht verändert werden. Der Aufruf erfolgt einmalig vor dem Aufruf der Funktion DLL_vInit. |
DLL_vInit |
Wird nach dem Laden des Plug-ins aufgerufen. Hier können Initialisierungen des Plug-ins vorgenommen werden. |
DLL_vDeInit |
Wird vor dem Entladen des Plug-ins aufgerufen. Hier können Deinitialisierungen vorgenommen werden, z.B. Freigabe von allokierten Speicher. |
DLL_vStart |
Wird bei jedem Start der Simulation aufgerufen. In dieser Funktion können z.B. Werte auf ihren Initialzustand zurückgesetzt werden. |
DLL_vStop |
Bei Stoppen der Simulation wird diese Funktion aufgerufen. Hier können z.B. Aktualisierungstimer wieder angehalten werden. |
optionale Export-Funktionen |
|
Bezeichnung |
Beschreibung |
DLL_iPreTranslateMessage |
Filtert Meldungen, bevor diese an TranslateMessage und DispatchMessage gesendet werden. Kann z. B. für die Verarbeitung von Tooltips verwendet werden. |
DLL_vOnIdle |
Zur Ausführung von Aktionen in der Leerlaufzeit (d.h. wenn keine Fenster-Nachrichten zu verarbeiten sind). |
DLL_iOnEvent |
Zur Reaktion auf Ereignisse. Ein Ereignis ist beispielsweise ein Mausklick auf den Eintrag des Plug-ins im Baum. Auch die Behandlung eines eigenen Kontextmenüs kann hierüber gesteuert werden. |
DLL_iOnSave |
Kann zum Speichern von Einstellungen im Arbeitsbereich genutzt werden. Die Funktion wird aufgerufen, wenn der Benutzer „Speichern“ oder „Speichern unter…“ in CanEasy aufruft. |
DLL_iOnLoad |
Wird aufgerufen, wenn der Benutzer einen Arbeitsbereich lädt. (z.B. beim Start von CanEasy oder beim manuellen Laden eines Arbeitsbereichs) Achtung: Hier muss auf jeden Fall die Versionsnummer ausgewertet werden, die der Funktion als Parameter übergeben wird. Nur so kann ein User-Plug-in sicherstellen, dass die Kompatibilität zu anderen Arbeitsbereichen immer gewährleistet bleibt. Es muss darauf geachtet werden, dass die gleiche Datenmenge ausgelesen wird, wie zuvor gespeichert wurde! |
CAND-Schnittstellen
Zur Kommunikation zwischen Plug-in und CanEasy werden dem Plug-in-Entwickler einige Funktionen (die sogenannten CAND-Schnittstellen) zur Verfügung gestellt. Zur Nutzung dieser Funktionen muss die Header-Datei CandUserApi.h im Plug-in-Projekt eingebunden werden. Die Schnittstellen sind in ANSI-C geschrieben und können so mit vielen Software-Produkten verwendet werden.