事件 – 从非托管C/C++函数在C/C++LI中触发事件

我需要从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;
}

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...