C++ Can';t传递回调函数';s指针作为参数

C++ Can';t传递回调函数';s指针作为参数,c++,windows,pointers,callback,function-pointers,C++,Windows,Pointers,Callback,Function Pointers,作为一名C++编程初学者,我被一个看似简单的问题所困扰。我无法将回调函数指针作为参数传递。midinOpen函数需要第三个参数的DWORD\u PTR类型值,显然这不起作用: #include <fcntl.h> #include <io.h> #include <iostream> #include <windows.h> #include <mmsystem.h> using namespace std; void CALLBA

作为一名C++编程初学者,我被一个看似简单的问题所困扰。我无法将回调函数指针作为参数传递。
midinOpen
函数需要第三个参数的
DWORD\u PTR
类型值,显然这不起作用:

#include <fcntl.h>
#include <io.h>
#include <iostream>
#include <windows.h>
#include <mmsystem.h>

using namespace std;

void CALLBACK traiterMidiIn(HMIDIIN hMidiIn, UINT wMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2) {
    std::wcout << "wMsg:" << wMsg << std::endl;
    std::wcout << "dwParam1:" << dwParam1 << std::endl;
    std::wcout << "dwParam2:" << dwParam2 << std::endl;
}

int main() {

    // Set the console to unicode mode
    _setmode(_fileno(stdout), _O_U16TEXT);

    // Declare variables
    BYTE byResultat;
    UINT uiNumDevice;
    MIDIINCAPS midiincaps;
    HMIDIIN hmidiin;

    // Initialize variables
    uiNumDevice = 0;

    // Open MIDI port
    byResultat = midiInOpen(&hmidiin, uiNumDevice, &traiterMidiIn, 0, CALLBACK_FUNCTION);

    return 0;
}

reinterpret_Cast(traitemidin)
OK,谢谢,它能工作,但是为什么要在评论中而不是在回答中?微软没有正确键入该参数是非常草率的。一旦你回答了几十次同样的问题,额外的几个代表点就开始失去吸引力:)
l'argument de type "void (__stdcall *)(HMIDIIN hMidiIn, UINT wMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2)" est incompatible avec le paramètre de type "DWORD_PTR"