Langsam komm ich nicht mehr klar..
Warum werden anweisungen die man in Delphi übergibt nicht sofort ausgeführt.
Wenn ich mein HWND erhalten habe warum kann ich es dann nicht direkt übergeben?
In VB gibt es die GET/LET funktionen
Was mit Let übergeben wird kann mit Get direkt ohne umwege zurück geholt werden.
Bei Delphi kommt Meldung : Linke seite kann nix zugewiesen werden.
Wenn ich einen neuen thread beginne warum wird dieser nicht erst abgearbeitet bevor
eine neue Function übergeben wird?
Der Code soll folgendermaßen abgearbeitet werden.
Thread erstellen mit BeginThread(xxx ..)
Im Thread! Sobald die Klasse Window erstellt ist ist auch das
Handle des Window bekannt
dieses möchte ich ohne umwege direkt übergeben damit es der Anwendung bekannt ist
bevor das Plugin gestartet wird.
Ist zwar VB habe es aber mal mit Delphi Formatiert dann kann man es besser lesen.
Hier mal der Ablauf
Delphi-Quellcode:
//Das ausgewählte Plugin starten
If (lstPlugins.ListIndex >= 0)
Then
alist = Split(lstPathList.List(lstPlugins.ListIndex), ",")
//Neuen Thread erstellen
VisChan = BASS_WINAMPVIS_CreateVis(alist(0), CLng(Combo1.ListIndex), 0)
//Song Titel übergeben
Text1.Text = "Hmmmmmmm was nun."
//Update intervall für Timer übergeben
HScroll4.Enabled = False
//Hwnd des Winamp Emulations Fenster erfragen
hwndWinamp = BASS_WINAMPVIS_GetAmpHwnd
lblWHandle = hwndWinamp
//ShowWindow hwndWinamp, SW_SHOW
//Position der Playliste setzen
SendMessage ByVal hwndWinamp, WM_USER, ByVal PLPos, ByVal IPC_SETPLAYLISTPOS
//Datei Infos übergeben
//VisChan = Handle
//Text1 = Title
//Text2 = Filename
//0 = Songposition
//1800 = Songlänge
//PLPos = Playlist Position
//20 = Playlist Einträge
BASS_WINAMPVIS_SetChanInfo VisChan, Text1, Text2, 0, 1800, PLPos, 20
//Aktuell gesetze Playlist Position erfragen
lblPos = Winamp_GetPlaylistPos
//Timer einschalten
If m_lId = 0
Then
m_lId = timeSetEvent(HScroll4.Value, 300, AddressOf TimerProc, TimerhWnd, TIME_PERIODIC)
End If
//Plugin Windowhandle erfragen und zuweisen
Label6.Caption = BASS_WINAMPVIS_GetVisHwnd
//Wenn mehr als 0 Window Handle an MagneticWindow übergeben
If Label6.Caption > vbNullString
Then
oMagneticWindow.AddWindow CLng(Label6.Caption), Me.hwnd
End If
Timer1.Enabled = True
End If
Nach übergabe von CreateVis wird die function im Plugin nicht vollständig abgearbeitet
was bedeutet es findet schon die abfrage nach dem hwndWinamp statt welches
bis da noch nicht ermittelt wurde.
Ist Delphi so langsam ? oder wo liegt das Problem.
Delphi-Quellcode:
WinAtom := Windows.RegisterClassEx(wClass);
if WinAtom <> 0 then
Result := CreateWindowEx(0, AppClass, AppTitle,
WS_POPUP, // Kein Frame, Unsichtbar
0, 0, 275, 116, // x, y, width, height
{parent} 0, 0, hInst, nil)
else
Result := 0;
// Hwnd von der ausführenden Anwendung
if AppParentHandle <> 0 then
begin
AmpHandle := 0;
VisPlgHandle := Result;
repeat
amphandle := BASS_WINAMPVIS_GetAmpHwnd;
until amphandle <> 0;
Sobald das Window erstellt wurde ist das amphandle bekannt
Wird aber wie schon beschrieben vorher abgefragt..
Das kann es doch nicht sein.
WIe reglet man das in Delphi das die Reihenfolge abgearbeitet wird und nicht alles auf einmal.
gruß
da