Bonjour,
J'ai récupéré une vieille DLL en langage C mais qui ne marche pas et je souhaite la faire marcher, voici le source :
Est-ce que cla vous inspire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 // midi_cb.c dll to handle midi callback function #include <windows.h> #include <mmsystem.h> #include "midi_cb.h" #include "midiout.h" int FAR PASCAL LibMain (HANDLE hInstance, WORD wDataSeg, WORD wHeapSize, LPSTR lpszCmdLine) { return 1 ; } void FAR PASCAL _export WEP (int nParameter) { return ; } // outline of a MIDI output callback function void CALLBACK _export MidiOutCall (HMIDIOUT hMidiOut, UINT wMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2) { switch (wMsg) { case MOM_CLOSE: // midiOutClose() called break ; case MOM_DONE: // midiOutLongMsg() completed break ; case MOM_OPEN: // midiOutOpen() called break ; } return ; } // high-resolution timer callback function - outputs MIDI void CALLBACK _export TimeCallback (UINT nTimerID, UINT wMsg, DWORD dwUser, DWORD dw1, DWORD dw2) { int i ; MIDISONG FAR * lpMidiSong ; // pointer to the MIDI data is passed as dwUser parameter lpMidiSong = (MIDISONG FAR *) dwUser ; // start from last MIDI event played for (i = (int) lpMidiSong->dwLastEvent ; i < (int) lpMidiSong->dwEvents; i++) { // look for matching time (assumes 1ms clock) if (lpMidiSong->lpMidiData[i].dwTimeMs == lpMidiSong->dwTime) { // play MIDI data if time matches midiOutShortMsg (lpMidiSong->hMidiOut, lpMidiSong->lpMidiData[i].dwMidiData) ; lpMidiSong->dwLastEvent = (DWORD) i ; } if (lpMidiSong->lpMidiData[i].dwTimeMs > lpMidiSong->dwTime) break ; // quit looking if next event is ahead } if (lpMidiSong->dwLastEvent >= lpMidiSong->dwEvents - 1) timeKillEvent (nTimerID) ; // stop timer if at end else lpMidiSong->dwTime++ ; // otherwise advance ms counter }
Partager