Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#28

Re: Neustrukturierung einer DLL

  Alt 7. Jul 2007, 09:41
Zitat von Ghostwalker:
Ähm..um weitere Missverständnisse mal vorzubeugen. Ich bau dir mal eine Beispielunit wie das mit dem Superset gedacht ist
Hmm das wäre Super!
Danke für deine Mühe.

Irgendwie hab ich hier einen Bug im Forum entdeckt die seite ist bei mir hier geteilt!
Komisch nach dem letzen Satz geht sie wieder... schon seltsam

Bin am überlegen ob ich nachher noch die DLL als ComObject auslegen soll
hmmm... zumindest wäre sie dann auch unter Linux anwendbar.
Na eins nach dem anderen.

EDIT:
Hier mal eine ungefähre ablauffolge:

1. Initialisieren
Delphi-Quellcode:
Einmalig aufgerufen.
BASS_WINAMPVIS_INIT(Application.Handle, frmMain.Handle);
2. Plugin laden und Informationen einlesen
Delphi-Quellcode:
GetPlugin;
innerhalb deiner Anwendung
Dort geht es weiter
Delphi-Quellcode:
  flist.CommaText := BASS_VIS_FindPlugins(PChar(PluginDir),
                                          BASS_VIS_FIND_WINAMP or
                                          BASS_VIS_FIND_RECURSIVE or
                                          BASS_VIS_FIND_COMMALIST);
Lugins werden eingelesen
Dann wird die Information des plugins eingeholt
Delphi-Quellcode:
GetPluginInfo;
innerhalb deiner Anwendung
Delphi-Quellcode:
  vischan := BASS_WINAMPVIS_GetHandle(PChar(PluginDir + PluginList.Items[IndexNum]));
  NumModule := BASS_WINAMPVIS_GetNumModules(PChar(PluginDir + PluginList.Items[IndexNum]));
  PluginName := BASS_WINAMPVIS_GetName(vischan);
Jetzt sind alle relevanten Infos zum ausführen der plugins vorhanden.
--------------------------------
3. Plugin starten
Delphi-Quellcode:
    BASS_WINAMPVIS_SetChanInfo(0,
                               PAnsiChar(MediaTitle),
                               PAnsiChar(StreamFile),
                               round(StreamPos),
                               round(StreamLength),
                               Playlist.ItemIndex,
                               Playlist.count);
MediaInformationen senden
Delphi-Quellcode:
      vischan := BASS_WINAMPVIS_ExecuteVis(PChar(PluginDir +
                                          PluginList.Items[IndexNum]),
                                          VisModules.Selection.Top,
                                          True,
                                          ckShowW2.Checked);
      // Get HWND from Winamp Dummy Window
      hWndWinAMP := BASS_WINAMPVIS_GetAmpHwnd;

      // send the last active Playlist index to visplugin
      BASS_WINAMPVIS_SetPlaylistPos(hWndWinAMP, PlaylistPos);

      // Playing Status
      BASS_WINAMPVIS_Play(hWndWinAMP);

      // Check IsPlaying
      ISPlaying := BASS_WINAMPVIS_IsPlaying(hWndWinAMP);
          
      BASS_WINAMPVIS_SetGenHwndParent(hWndGen,
                                          Panel1.Handle,
                                          5,
                                          5,
                                          Panel1.Width - 10,
                                          Panel1.Height - 10);

      BASS_WINAMPVIS_RenderStream(stream);

Plugin starten
usw... das muß im moment bei jeden Typ erfolgen
Kannst dir vorstellen was da für ein schreibkram zustande kommt wenn du alle typen verwenden willst.

gruss Emil
  Mit Zitat antworten Zitat