个人开发历程知识库

关注C++/Java/C#技术, 致力于安防监控/移动应用/WEB方面开发
------------------------------------ 业精于勤,荒于嬉;行成于思,毁于随
posts - 163, comments - 751, trackbacks - 0, articles - 18
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

VC6开发视频监控ActiveX控件总结

Posted on 2009-05-28 00:46 peterzb 阅读(...) 评论(...) 编辑 收藏

     总结前段时间在VC6下使用MFC开发视频监控控件过程中遇到的一些问题.

1.获取控件当前所在路径,用于读取该目录下的INI配置文件

获取配置文件路径

 

2.获取当前运行控件的电脑上的固定盘符列表,用于本地录像文件存放

获取固定盘符列表的函数

 

3.视频1,4,9,16路画面切换显示

   较简单地实现,在窗体上拖16个STATIC控件(定义数组为panels),动态调整它们的位置大小即可,然后定义一个类如CPlayStatic去继承CStatic,每一个STATIC控件就由CPlayStatic管理;因为我们要在Static控件上添加鼠标,键盘事件处理,鼠标单击事件,选中该一播放面板时绘制绿色边框,可以很明显地看出当前是选中那一路视频播放窗体,同时恢复上一路选中边框为默认灰色边框;鼠标双击事件,实现视频浏览窗口的全屏功能(按多路预览-->单屏预览-->全屏-->单路浏览-->多路预览);右击菜单,对当前画面进行操作,如本地录像,语音对讲,抓图等操作;键盘事件处理,如该窗体当前正在预览按F2/F键进入全屏模式,按Esc退出全屏,恢复普通模式(需让该窗体获得焦点,处理KeyDown事件)

1,4,9,16路画面切换

 

4.画面全屏显示 需注意播放窗口全屏后,就不能够通过GetDlgItem(int ctrlid)获取到该STATIC控件句柄了

全屏

 

5.如果ActiveX控件要使用其它第三方的ActiveX,需在InitInstance()方法中添加AfxEnableControlContainer(); 否则会造成第三方控件无法显示,控件创建出错

6.ActiveX在网页中使用

  需使用object标签,其classid具体值可在odl文件中找到,一般在文件最后,不要弄错,否则将会造成控件无法成功创建; odl文件中包含了控件的所有属性,方法以及事件;使用如下

<object id="ocx1" height="520" width="640"
      classid="clsid:D55EFD59-8482-4486-9FDE-669EFAC4221B">
     </object>

若JavaScript想调用控件的方法,可以这样ocx1.RealPlay();调用控件的RealPlay方法

 

7.相关参考文章

使用MFC开发ActiveX控件全过程

ActiveX的设计

在ActiveX控件中引入窗体技术

如何将MFC ActiveX控件标记为安全

将ActiveX控件标记为脚本安全和初始化安全

ActiveX控件数字签名的实现

ActiveX安全:改进和最佳实践[MSDN]

JavaScript 响应 ActiveX 事件

ActiveX组件与JavaScript交互 

javascript脚本中定义的参数数组,如何在VC++中访问

IExpress压缩CAB文件及制作安装程序所开发的小工具

Web发布cab文件打包的ActiveX控件总结

制作cab包,参考inf文件