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 :

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
}
Est-ce que cla vous inspire ?