• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > COM接收器,接收不到事件信息

COM接收器,接收不到事件信息

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了com口接收不到数据,com 事件,5xx.com不用播放器,beeg.com播放器,5xx.com播放器等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: COM 接收器,接收不到事件信息
描述:

//class CSinkObj
#import "AxisMediaParser.dll" no_namespace named_guids
class ATL_NO_VTABLE CSinkObj : 
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CSinkObj, &CLSID_SinkObj>,
public IDispatchImpl<ISinkObj, &IID_ISinkObj, &/*LIBID_AxisMediaParserLib*/LIBID_ATLEVNTLib>,
public IDispEventImpl<IDC_SRCOBJ, CSinkObj, &DIID_IAxisMediaParserEvents, &LIBID_AxisMediaParserLib, 1, 0>
{
public:
CSinkObj()
{
}
DECLARE_REGISTRY_RESOURCEID(IDR_SINKOBJ)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CSinkObj)
COM_INTERFACE_ENTRY(ISinkObj)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
BEGIN_SINK_MAP(CSinkObj)
SINK_ENTRY_EX(IDC_SRCOBJ, DIID_IAxisMediaParserEvents, 1, OnVideoSample32)
END_SINK_MAP()
void __stdcall OnVideoSample32(long CookieID, long SampleType, long SampleFlags, long StartTimeLow, long StartTimeHigh, long StopTimeLow, long StopTimeHigh, const VARIANT& SampleArray)
{
AtlTrace("OnVideoSample\n");
}
}
以下为调用:
HRESULT hRes = CoInitializeEx(NULL, COINIT_MULTITHREADED);
HRESULT hr = m_spSrcObj.CoCreateInstance(OLESTR("AxisMediaParserLib.AxisMediaParser"));
HRESULT hr = CComObject<CSinkObj>::CreateInstance(&m_pSinkObj);
m_pSinkObj->AddRef();
_ASSERTE(SUCCEEDED(hr));
hr = m_pSinkObj->DispEventAdvise(m_spSrcObj);
m_spSrcObj->PutMediaPassword(PASSWORD);
  m_spSrcObj->PutMediaURL(URL_PROTOCOL);
  m_spSrcObj->PutMediaUsername(LOGIN);
LONG lConnectionCookie;   LONG lNumberOfStreams;   VARIANT MediaType;  
m_spSrcObj->Connect(&lConnectionCookie, &lNumberOfStreams, &MediaType);
long videoCode = 0;
m_spSrcObj->GetVideoCodec(&videoCode);
m_spSrcObj->Start();
调用方法成功,但OnVideoSample32接收不到事件消息.
请大佬指点一下,是不是接收器写得不对,多谢!


解决方案1:

SINK_ENTRY_EX(IDC_SRCOBJ, DIID_IAxisMediaParserEvents, 1, OnVideoSample32) 没有指明OnVideoSample32函数的参数类型
使用SINK_ENTRY_INFO宏

_ATL_FUNC_INFO paraminfo =
     {
      CC_STDCALL, //calling conv
      VT_EMPTY,//返回值
      8 ,//参数个数
      {VT_I4,VT_I4,VT_I4,VT_I4,VT_I4,VT_I4,VT_I4,VT_VARIANT} //参数类型
     };
SINK_ENTRY_INFO(IDC_SRCOBJ, DIID_IAxisMediaParserEvents, 1, OnVideoSample32,&paraminfo);

另外注意参数的个数不能超过8,不然没法成功


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 求COM连接点、接收器的例子
  • com找不到接收器
  • 如何释放COM连接点的接收器的实例
  • COM接收器,接收不到事件信息

相关文章

  • 2017-06-04 怎么实现在远程客户端退出时,将ATLService服务器关闭?
  • 2017-06-04 如何在程序中填写PDF的FORM?
  • 2017-06-05 调试问题(毕业设计)
  • 2017-06-05 大家说这样的线程有没有问题?
  • 2017-06-05 有关多线程问题的提问,请各位高手指教
  • 2017-06-05 dll隐式连接问题,高分求助
  • 2017-06-04 求activeX例程:图片简单操作,比如loadimage,zoomin/zoomout,图片平移,等
  • 2017-06-05 消息如何过滤要怎么实现??
  • 2017-06-04 ActiveX与序列化的问题
  • 2017-06-05 一个Dll调用的问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • vc的ocx接收从vb传来的数组
    • MFC串口+Access数据库
    • 求助:关于子类化的问题
    • 关于设置多线程的菜鸟问题,急待解决,请大家帮忙!!!
    • 如何在ActiveX控件的界面上显示自定义窗口,就像在对话框中显示的那样?---在线等待
    • 怎么在BHO中创建一个IE窗口出来?
    • 如何彻底删除一个dll?
    • 命名空间已经声明,为什么还提示“IXMLDOMDocumentPtr”为不明确的符号?
    • 简单问题(dll),高手进
    • com+应用程序代理安装在WIN98下需要安装那几个文件?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有