无法将回调函数的指针作为参数传递

时间:2015-09-06 12:55:23

标签: c++ windows pointers callback function-pointers

作为一名C ++编程初学者,我坚持看似简单的问题。我无法将回调函数指针作为参数传递。 midiInOpen函数需要第三个参数的DWORD_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;
}

我认为这与成员/非成员/静态函数有关,但是关于它们的例子仍然难以理解我的弱技能。 生成错误:

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"

0 个答案:

没有答案