Gå til innhold
🎄🎅❄️God Jul og Godt Nyttår fra alle oss i Diskusjon.no ×

mciSendString, problem med callback


Anbefalte innlegg

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
Videoannonse
Annonse

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...