荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: scanf (carefully), 信区: Visual
标  题: [zz]视频扑获笔记(三)
发信站: 荔园晨风BBS站 (Mon Oct 27 21:54:03 2003), 站内信件

三.关于捕获窗口

    在捕获之前必须创建一个捕获窗口(capture window),在发送消息或使用宏
的过程中都需要使用此窗口。
1.创建一个AVICap捕获窗口
你可以使用capCreateCaptureWindow函数来创建一个AVICap捕获窗口, 此函数将会
返回一个句柄, 此句柄以后在发送消息时要用.
你可以在一个程序里创建一个或多个捕获窗口, 然后给每一个窗口连接不同的捕获
设置.

2.将一个捕获窗口连接至捕获设备
你可以动态的在一个捕获窗口与一个捕获设备之前连接或断接, 你可以发送
WM_CAP_DRIVER_CONNECT消息来使一个捕获窗口与一个捕获设备连接或关联. 当连
接上以后, 你就可以通过捕获窗口向捕获设备发送各种消息.
如果你的系统里装有多个捕获设备, 你可以在发送WM_CAP_DRIVER_CONNECT消息时
用wParam参数指定使用哪一个, 此参数是登记在SYSTEM.INI文件的[drivers]一节
里的列表中的某一项, 0为第一个.
你可以使用capGetDriverDescription函数来得到已安装的捕获设备的名称及版本,
 这样你的程序就可以列举所有已安装的捕获设备和驱动, 这样用户就可以选择其
中的一个来与你的捕获窗口连接.
你可以发送WM_CAP_DRIVER_GET_NAME消息(或capDriverGetName宏)来得到连接到捕
获窗口的捕获设备的名称, 得到版本发送WM_CAP_DRIVER_GET_VERSION消息(或
capDriverGetVersion宏)
你可以发送WM_CAP_DRIVER_DISCONNECT消息(或capDriverDisconnect宏)来断接.

3. 父窗口与子窗口的交互
一些象WM_PALETTECHANGED和WM_QUERYNEWPALETTE的系统级消息只能发送到顶级窗
口或OVERLAPPED窗口, 如果一个捕获窗口是子窗口,就必须通过父窗口转送.
同样的, 如果父窗口的尺寸改变了, 它就需要通知捕获窗口, 相反地, 如果捕获窗
口的尺寸改变了, 捕获窗口就需要发送消息给父窗口, 一个简单的方法就是始终保
持捕获窗口的尺寸与视频流的尺寸一致, 并随时将尺寸的改变通知父窗口.

4.捕获窗口的状态
你可以发送WM_CAP_GET_STATUS消息(或capGetStatus宏)来得到当前捕获窗口的状
态, 得到的是一个CAPSTATUS结构的拷贝, 它包含图片的尺寸, 卷轴的当前位置,
overlay和preview是否已设置.
因为CAPSTATUS信息是动态的, 你的程序应该只要捕获的视频流的尺寸或格式可能
发生了改变就应该进行刷新(例如: 显示了捕获设备的视频格式以后).
改变捕获窗口的尺寸并不影响实际的捕获的视频流的尺寸, 视频捕获设备的格式对
话框捕获频流的尺寸.

--

→我:(打劫内裤,快脱,不然,老子毙了你!)
看  ●    ○   ╮╮     看
↓  █┳  ┗█┛  \█/ 我倒!~~↓
面  ┏┓   ┛┗   ●     面
→你:(大哥,我今天没穿啊,不要~不要啊!)

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.36.110]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店