Jonas Skrevet 27. mars 2007 Del Skrevet 27. mars 2007 Hei, Prøver å lage en loop av midi-filer, koden ser foreløpig slik ut, Public Sub PlayMusic() mciSendString "close tetrisound", vbNullString, 0, 0 Dim lngRet As Long ' lpstrCommand = open "D:\Temp\VB\Spill\Tetris 2\music01-30.mid" alias tetrisound lngRet = mciSendString("open ""D:\Temp\VB\Spill\Tetris 2\music" & Right("0" & RandomNumber(1, 30), 2) & ".mid"" alias tetrisound", vbNullString, 0, 0) GetMciError lngRet lngRet = mciSendString("play tetrisound notify", vbNullString, 0, AddressOf WindowProc) GetMciError lngRet End Sub Public Function WindowProc(ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long If msg = MM_MCINOTIFY Then PlayMusic WindowProc = CallWindowProc(g_lngOldWindowProc, hwnd, msg, wParam, lParam) End Function PlayMusic() blir kalt i det spillet starter og meningen er at callback-funksjonen skal starte en ny melodi, men av en eller annen grunn blir aldri PlayMusic kalt av WindowProc. Antar at command-paramtererene til mciSendString er feil, hvordan er det det egentlig skal skrives? Takker for all hjelp! - Jonas Lenke til kommentar
aadnk Skrevet 28. mars 2007 Del Skrevet 28. mars 2007 Den siste parameter skal inneholde en peker til et vindu (hWnd), og ikke en funksjonsadresse. mciSendString kaller nemlig dette vinduets WinProc-prosedyre når operasjonen, i dette tilfellet at MCI er ferdig med avspillingen, er utført. Se etter verdien MM_MCINOTIFY (&H3B9) i msg-parameteren. Lenke til kommentar
Jonas Skrevet 28. mars 2007 Forfatter Del Skrevet 28. mars 2007 Yay, det fungerte perfekt. Takk skal du ha! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå