C++ Can';t传递回调函数';s指针作为参数
作为一名C++编程初学者,我被一个看似简单的问题所困扰。我无法将回调函数指针作为参数传递。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
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"