之前参与开发的一个软件,总体界面用WPF搭建,其中有个界面是用C++封装成了DLL来调用,并且在上面会有许多鼠标、键盘操作。
现在希望在该界面上执行相应操作时能够通知到C#这边。
于是采用了在DLL中注册回调函数的方式,以下做了一个简单的测试Demo说明以下。
C++:
#include <Windows.h>
typedef int (*CallBackFunc)(int);
CallBackFunc g_callbackfunc = NULL;
extern "C"
{
__declspec(dllexport) void RegisterCallBack(int(*func)(int));
__declspec(dllexport) void BtnClicked(int arg);
};
void RegisterCallBack(int(*func)(int))
{
g_callbackfunc = func;
}
void BtnClicked(int arg)
{
if (g_callbackfunc != NULL)
{
g_callbackfunc(arg);
}
}
定义了一个返回值为int,参数类型为int的函数指针,一个注册函数,一个按钮单击的函数。
C#: