Zitat von
EWeiss:
Habe da noch ein verständnis problem
Du schreibst
procedure BASSVIS_Execute(Para:TExecutePara);
Verstehe ich nun nicht so recht
Denn genau diese Funktion sollte exportiert und der ganze andere Kram gelöscht werden.
Löschen mußt du garnichts
und exportieren nur dann wenn du das direkt in die
DLL einbauen willst.
Zitat von
EWeiss:
Das soll dann gelöscht werden
Delphi-Quellcode:
function BASS_WINAMPVIS_ExecuteVis(PluginName: PChar; moduleNum: integer; ownHdc: boolean; ownHdcW2: boolean): HVIS; stdcall; external TheDll;
function BASS_SONIQUEVIS_CreateVis(f, visconfig:PChar; flags, w, h: DWORD):HVIS; stdcall; external TheDll;
function BASS_WMPVIS_ExecuteVis(PlgListIndex: Integer; PresetIndex: Integer; VisWinhandle: DWORD; Left, Top, width, heigth: Integer): HVIS; stdcall; external TheDll;
Nein. Die brauchst du ja, da sie aus der
DLL kommen.
Zitat von
EWeiss:
Also eine Funktion für drei.
Aber alle Funktionen der verschiedenen Typen mit obiger procedure ausführbar sein.
Nicht ganz. Ich kapsle drei Funktionen über einen Funktionsaufruf. Damit braucht sich
der Anwender keinen Kopf machen, welche Funktion er denn für ein Plugin er nun aufrufen muß,
da es immer die gleiche ist
Zitat von
EWeiss:
Ich müßte sie dann so umschreiben wie diese
BASSVIS_ExecuteVis(Kind: BASSVIS_KIND_T; PluginName: PChar; moduleNum: integer; ownHdc: boolean; ownHdcW2: boolean):HVIS; stdcall;
Nein, brauchst du nicht. Der Parameter KIND wird ja beim INIT-Aufruf bereits angegeben (und intern gespeichert). Analog dazu HVIS, da immer nur ein Plugin aktiv sein kann. Die restlichen Parameter
stecken im Record. Die globalisierte Funktion geht jetzt her, und ruft die internen Funktionen (die aus der
DLL) mit den entsprechenden Parametern aus dem Record und ggf. den intern gespeicherten Informationen auf.
Man könnte auch sagen, das du eine gemeinsame Zugriffsschicht über deine
DLL-Funktionen legst.
Btw. In welcher Sprache ist eigentlich die
DLL geschrieben ?