C++ c++;回调函数类型

C++ c++;回调函数类型,c++,winapi,win32-process,C++,Winapi,Win32 Process,我试图在Win32中创建类似于MsgProc的东西。当它们声明MsgProc函数时,它们前面有CALLBACK类型。所以,我所要做的就是创建我自己的Message函数,它调用我的函数来处理消息。在发送和处理消息时,这基本上是相同的。我的问题是如何创建相同的流程?。一个例子是很棒的。 如果你在C++中,只需使用类中的函数指针: 如果您可以使用Boost,我肯定会试一试,它们以干净、安全的方式(甚至是线程安全的方式)提供您想要的功能。除了新的C++0x lambdas可能会感兴趣的经典函数指针和函数

我试图在Win32中创建类似于
MsgProc
的东西。当它们声明
MsgProc
函数时,它们前面有
CALLBACK
类型。所以,我所要做的就是创建我自己的Message函数,它调用我的函数来处理消息。在发送和处理消息时,这基本上是相同的。我的问题是如何创建相同的流程?。一个例子是很棒的。

如果你在C++中,只需使用类中的函数指针:


如果您可以使用Boost,我肯定会试一试,它们以干净、安全的方式(甚至是线程安全的方式)提供您想要的功能。

除了新的C++0x lambdas可能会感兴趣的经典函数指针和函数对象之外

下面是一个将lambda传递给计时器函数的示例

#include <windows.h>
#include <iostream>
#include <functional>

void onInterval(DWORD interval, std::function<void ()> callback) {
  for (;;) {
    Sleep(interval);
    callback();
  }
}

int main() {
  onInterval(1000, []() {std::cout<<"Tick! ";});
}
#包括
#包括
#包括
void onInterval(DWORD间隔,std::函数回调){
对于(;;){
睡眠(间歇);
回调();
}
}
int main(){

onInterval(1000,[](){std::coutCALLBACK是一个定义为u stdcall的宏。它将回调的调用约定设置为win32 API的调用约定。在自己的代码中实现回调不需要此宏,除非它处理Windows API。