Events 在C+中触发事件+/CLI来自非托管C/C++;功能 我需要用C++中的无人值守函数来触发C++中的事件。p>
最好的方法是什么Events 在C+中触发事件+/CLI来自非托管C/C++;功能 我需要用C++中的无人值守函数来触发C++中的事件。p>,events,c++-cli,unmanaged,Events,C++ Cli,Unmanaged,最好的方法是什么 提前谢谢。我从codeproject上的一些帮助帖子中得到了一些帮助 想把它贴在这里对其他人可能有用 #include "stdafx.h" #include "windows.h" using namespace System; using namespace System::Runtime::InteropServices; class Camera { public: Camera() { } ~Camera(){} void
提前谢谢。我从codeproject上的一些帮助帖子中得到了一些帮助 想把它贴在这里对其他人可能有用
#include "stdafx.h"
#include "windows.h"
using namespace System;
using namespace System::Runtime::InteropServices;
class Camera
{
public:
Camera()
{
}
~Camera(){}
void (*test)(void);
void OnNewCameraData();
void StartDataAcquisition();
};
void Camera::StartDataAcquisition()
{
int i;
while(i<10)
{
test();
i++;
Sleep(1000);
}
}
delegate void FunctionToCallDelegate();
ref class CameraAdapter
{
private:
Camera *_camera;
FunctionToCallDelegate ^_Function;
public:
CameraAdapter(FunctionToCallDelegate ^handler)
{
_Function = handler;
}
void Init()
{
_camera = new Camera();
pin_ptr<FunctionToCallDelegate^> tmp = &_Function;
_camera->test = (void (__cdecl *)(void))(Marshal::GetFunctionPointerForDelegate(_Function).ToPointer());
_camera->StartDataAcquisition();
}
~CameraAdapter()
{
delete _camera;
_camera = 0;
}
void OnNewCameraData()
{
Console::WriteLine("Received Frame \n");
}
};
int main(array<System::String ^> ^args)
{
FunctionToCallDelegate ^dsi;
dsi += gcnew FunctionToCallDelegate(gcnew CameraAdapter(dsi), &CameraAdapter::OnNewCameraData);
CameraAdapter ^camera = gcnew CameraAdapter(dsi);
camera->Init();
Console::ReadKey();
return 0;
}
#包括“stdafx.h”
#包括“windows.h”
使用名称空间系统;
使用名称空间System::Runtime::InteropServices;
类摄像机
{
公众:
摄影机()
{
}
~Camera(){}
无效(*测试)(无效);
void OnNewCameraData();
void StartDataAcquisition();
};
无效摄影机::StartDataAcquisition()
{
int i;
而(itest=(void(uu cdecl*)(void))(Marshal::GetFunctionPointerForDelegate(_Function).ToPointer());
_摄像头->开始数据采集();
}
~CameraAdapter()
{
删除摄像头;
_摄像机=0;
}
void OnNewCameraData()
{
控制台::WriteLine(“接收到的帧\n”);
}
};
int main(数组^args)
{
调用委托^dsi的函数;
dsi+=gcnew FunctionToCallDelegate(gcnew CameraAdapter(dsi)和CameraAdapter::OnNewCameraData);
CameraAdapter^camera=gcnew CameraAdapter(dsi);
摄像头->初始化();
控制台::ReadKey();
返回0;
}
<代码> >传递一个函数指针,当被本地代码调用时,运行一个触发事件的方法:具体来说,我需要从C++类的成员函数中导出这个词。“Fire”和“C++类”这两个词在同一个句子中并不意味着什么。Bjarne Stroustrup从未被解雇。