事件 – 从非托管C/C++函数在C/C++LI中触发事件
发布时间:2020-12-16 07:02:34 所属栏目:百科 来源:网络整理
导读:我需要从c中的无人函数触发用C/C++LI编写的事件. 做这个的最好方式是什么? 提前致谢. 解决方法 我在codeproject上的一些帮助帖子中找到了一些帮助 想在这里发布它可能对其他人有用 #include "stdafx.h"#include "windows.h"using namespace System;using na
我需要从c中的无人函数触发用C/C++LI编写的事件.
做这个的最好方式是什么? 提前致谢. 解决方法
我在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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |