c++
struct
typedef struct _PREVIEW_CHANNEL_INFO
{
DWORD dwID;
PreviewDataCallback funcStreamCallback;
}PREVIEW;
定义
typedef int (WINAPI *PreviewDataCallback)(。。。);
调用
PREVIEW_CHANNEL_INFO_EX openInfo;
memset(&openInfo,0,sizeof(PREVIEW_CHANNEL_INFO));
openInfo.funcStreamCallback = PreviewDataCallback;
ERR_MSG herr = ERR_SUCCESS;
herr = OpenPreviewChn(m_deviceip.GetBuffer(0), m_deviceport, (PREVIEW_CHANNEL_INFO *)&openInfo, 。。。);
C#
[StructLayout(LayoutKind.Sequential)]
public struct PREVIEW_CHANNEL_INFO
{
public uint dwID;
public MyPreviewDataCallback funcStreamCallback;
};
public delegate int MyPreviewDataCallback(。。。); //声明委托
然后_PREVIEW.PreviewDataCallback= new MyPreviewCallback(PreviewCallbackFunc);
public static int PreviewDataCallbackFunc(。。。)
{
}
调用
PREVIEW_CHANNEL_INFO openinfo;
openinfo.dwID = cid;
openinfo.PreviewCallback = new MyPreviewCallback(PreviewCallbackFunc);
OpenPreviewChn(txtIP.Text, uint.Parse(txtPort.Text), ref openinfo, out chanelPtr, 。。。更多参数);
把struct PREVIEW 作为回调函数的参数传进去,然后执行完回调函数,窗体直接关闭了,没有任何异常,类似这个帖子
http://bbs.csdn.net/topics/370134994
http://q.cnblogs.com/q/73407/ 参考这个问题,不知道有人知道怎么回事不
大概是这样,代码可能乱了点
读GetLastError看看是什么问题。
没c++的代码,c# 应该不行吧
编译成 x86,设置为 stdcall,struct PREVIEW_CHANNEL_INFO 和 struct PREVIEW 需要在整个运行期间保持有效。
callback函数需要这样定义
typedef int (__stdcall*PreviewDataCallback)(。。。);