Nach dem Betaetigen von OK geht's weiter mit dem
Anwendungsassistent, hier wir brauchen nichts zu aendern und so koennen
wir gleich auf Fertigstellen klicken .

Nachdem wir wieder im Hauptfenster sind , muessen noch einige
Einstellungen getaetigt werden , um den Pfad zu den Inludes und
Libaries des AM-SDK's unserer Applikation bekanntzumachen . Dies
geschieht ueber Projekt->Einstellungen .
Als erstes waehlen wir die Seite C/C++ an , dort Praeprozessor sowie
alle Konfigurationen und tragen bei Zusaetzliche Include-Verzeichnisse
den Pfad zu den Inlude Dateien des AMSDK's ein . Am einfachsten per
relativer Pfadadressierung, im Beispiel ..\..\..\include .

So jetzt muessen wir noch die Erweiterung der zu erzeugenden Datei
auf .hxt aendern sowie, die einzubindenden Bibliotheken des SDK's
festlegen . Diese Einstellungen nehmen wir auf der Seite Linker vor .
Als erstes fuer die Debug-Version

Und dann auch gleich noch fuer die Release-Version

Hierbei sollte darauf geachtet werden, dass die beiden Versionen in
unterschiedlichen Verzeichnisssen erzeugt werden (ebenfalls wieder
relative Adressierung) sowie bei beiden , die Dateinamenserweiterung
auf .hxt geaendert wird .
Das waeren dann auch schon alle wichtigen Aenderungen fuer die
Projekteinstellungen .
Weiter gehts im Hauptfenster .
Um A:M mitzuteilen, welcher Text fuer unser Plugin im Menu angezeigt
werden soll , legen wir als naechstes eine Stringressource am .
Dies geschieht mittels Einfuegen->Ressource
.

Hier wird String Table gewaehlt und mittels Neu auch erzeugt .
Jetzt wird im ersten Eintrag unter IDS_STRING1 der Titel eingegeben .

Wobei hier schon der erste Fallstrick lauert , wenn die ID des Stringes
IDS_STRING1 lautet muss dann auch diese ID verwendet werden, wenn man
den Menunamen in der Funktion HxtOnAddCommandMenu in entry.cpp dem Menu
hinzufuegt .
Als naechstes erstellen wir einen einfachen Dialog mittels Einfuegen->Ressource Dialog .

Schon haetten wir unseren einfachen Dialog .
Jetzt wird ueber den Klassenassistenten eine neue Klasse fuer diesen
Dialog erstellt .

Hier waehlen wir eine neue Klasse und im naechsten Arbeitsschritt geben
wir dieser den Namen sample_dialog .

So , dass Grundgeruest steht nun erstmal . Jetzt gehts an's eingemachte
. Dafuer waere es hilfreich , wenn Ihr das Sampleprojekt
schon heruntergeladen habt . Da es jetzt nur noch um den Sourcecode
geht .
Als erstes muss eine neue C++-Quellcodedatei in Euer Projekt eingefuegt
werden , nennen wir sie Entry.cpp . In dieser Datei
sind die Initialisierungsfunktionen, also HxtLoadCommandEntry
(legt fest, welcher Typ eines Objektes von AM erzeugt werden
soll,Definitionen in includes\objtype.h), HxtOnAddCommandMenu
(legt den Namen fest , unter dem das Plugin im Menu angezeigt
wird sowie den Typ des Plugins), sowie HxtOnCommand
(die Funktion, die ausgefuehrt werden soll, wenn das Plugin aufgerufen
wird).
Zu beachten ist auch , dass die Includes richtig gesetzt werden . Die
Funktionen am einfachsten aus dem Beispielprojekt kopieren.
Als naechstes sind noch Aenderungen in sample.h vorzunehmen .
Dort fuegen wir folgenden zusaetzlichen Includes ein.
#include "SDK\HPropert.h"
#include "SDK\HPropDri.h"
#include "SDK\HPatch.h"
#include "SDK\HModel.h"
Ebenso die Klassen
class HModelCache;
class HGroupCP;
Ausserdem die Funktion
BOOL OnSampleWizard(HModelCache *hmc);
sowie
virtual BOOL InitInstance();
virtual int ExitInstance();
(Die Stellen , an denen dies eingefuegt wird , koennt Ihr in sample.h
sehen :-))
Die neuen Funktionen muessen natuerlich auch noch mit Leben gefuellt
werden und wie nicht anders zu erwarten geschieht dies in
sample.cpp . Ich gehe hier nur auf die wichtigste Funktion ein,
OnSampleWizard .
BOOL CSampleApp::OnSampleWizard(HModelCache *hmc)
{
sample_dialog dlg(NULL); //Erzeugung des
Dialogs
if (dlg.DoModal()!=IDOK)
return TRUE;
return TRUE; //hier wird ansonsten die
Funktion uebergeben, die etwas bewirken soll, bei unserem
Beispielprojekt tut sie nichts, //dewegen nur return TRUE
// andernfalss z.B. return NewShape(hmc) , zu sehen in Grid\HXT.cpp
Grid\evalute.cpp
}
Das war's schon , bei einem Druck auf F7 sollte sich das
Beispielprojekt , ohne zu murren kompilieren lassen . Wenn nicht,
vergleicht am besten den Quellcode des Beispielprojektes mit Euer
eigenem , meist sind vergessene Includes schuld .
Nach erfolgreichem Kompilieren , die Datei sample.hxt in's AM HXT
Verzeichniss kopieren und beim naechsten Start von
A:M sollte ,das Plugin schon sichtbar sein , wenn Ihr ein Objekt oder
ein Modell selektiert habt .
Um zu sehen, wie man dann das Plugin auch mit richtigen Leben erfuellt
, ist dann als naechstes ein Studium der Sourcen von
Plugins angesagt , wobei mir das Grid-Plugin da am meisten geholfen hat
(das war auch die Vorlage fuer mein erstes Plugin).
Wie man ein solches Plugin debuggt, zeigt mein 2.kleines Minitutorial .
Zurück zur Übersicht