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