Hallo,
folgender Sachverhalt. Ich habe ein Programm. Compiliert sind es mittlerweile 3 MB. Kurzerhand machte ich aus dem Project eine DLL und erstellte ein neues Project. Dort band ich die DLL ein und rufe sie auf!
Soweit klappt alles. Das EXE File ist minimal, nur die DLL halt ein wenig grösser. Das stört mich bis jetzt aber nicht.
Nur kommt noch einiges dazu und ich möchte gerne den anderen Teil des Projectes wiederrum in eine DLL auslagern! Also machte ich folgendes.
Mein Project besteht aus einer MDI Form und diversen Child Fenstern. Natuerlich sollen alle anderen Fenster in der MDI Form „gefangen“ sein.
Wenn ich nun die DLL mit dem anderen Teil des programmes versuche zu starten, mache ich das wiefolgt.
Private Sub RunDecodeMP3() ' -\> Sub aus der DLL wird aufgerufen
Dim DecodeMP3 As New MP3.Decodieren ' -\> Declaration zur Sub
MP3.Decodieren.Run (Start.hWnd)' -\> Sub Run aus der DLL aufrufen und das HWND von der MDI Form ( Start) übergeben
End Sub
Der Aufbau, der Dll schaut wiefolgt aus
'Instanzing ist auf 6 -\> Global Multiuse gesetzt
'Klasse Decodieren
Option Explicit
Public Sub Run(Handle As Long)
Hwnd = Handle
Decodiere.Show
End Sub
'Im Modul
Option Explicit
Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Public Hwnd As Long
'In der Form
Option Explicit
Private Sub Form\_Load()
Call SetParent(Me.Hwnd, Hwnd)
'Weiterer Source
End Sub
Ds Problem nun ist. Wenn ich die Sub RunDecodeMP3 aufrufe, so wird die Sub Run aus der Dll gestartet. Dort wird das Handle von der MDI Form empfangen. Danach wird die Form aufgerufen zum encodieren der MP3’s. Im Form Load Ereignis sollte eigentlich die Form in die MDI Form gebunden werden. Jedoch macht es das nicht. Man kann sie aus der MDI Form herausziehen!
Sieht jemand mein Fehler oder weiss wie ich es anders machen kann?
MfG Alex