- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用视屏捕获
3.2使用视频捕获
3.2.1创建捕获窗体
下面的例子通过使用capCreateCaptureWindow函数来创建一个捕获窗体
hWndC = capCreateCaptureWindow (
(LPSTR) My Capture Window, // 如果是Pop-up窗口的窗口名称
WS_CHILD | WS_VISIBLE, // 窗口类型
0, 0, 160, 120, // 窗口位置和尺寸
(HWND) hwndParent,
(int) nID /* child ID */);
?
3.2.2连接到一个捕获驱动器
下面举例,如何通过捕获窗口的句柄hWndC连接到MS VIDEO驱动程序上,同时还演示了如何断开连接。使用capDriverDisconnect:
fOK = SendMessage (hWndC, WM_CAP_DRIVER_CONNECT, 0, 0L);
// 或者使用宏连接:
// fOK = capDriverConnect(hWndC, 0);
?
// 关闭连接
capDriverDisconnect (hWndC);
?
3.2.3列举安装的捕获驱动程序
使用capGetDriverDescription 函数来获得系统已经安装的所有捕获驱动程序的名称和版本。
char szDeviceName[80];
char szDeviceVersion[80];
for (wIndex = 0; wIndex 10; wIndex++)
{
if (capGetDriverDescription (wIndex, szDeviceName,
sizeof (szDeviceName), szDeviceVersion,
sizeof (szDeviceVersion))
{
// 加入名字到一个已经安装的设备列表中
// 让用户选择一个使用。
}
}
?
?
3.2.4获得捕获驱动器的性能参数
WM_CAP_DRIVER_GET_CAPS消息可以返回捕获驱动程序以及其硬件的性能参数。这些信息存放在一个CAPDRIVERCAPS的数据结构中。当你的应用程序的捕获窗口连接到一个新的捕获驱动器后,都会刷新这个CAPDRIVERCAPS数据结构。下面将使用capDriverGetCaps宏来获得捕获设备的性能参数。
CAPDRIVERCAPS CapDrvCaps;
SendMessage (hWndC, WM_CAP_DRIVER_GET_CAPS,
sizeof (CAPDRIVERCAPS), (LONG) (LPVOID) CapDrvCaps);
// 或者,使用宏来获得驱动器的新能参数
// capDriverGetCaps(hWndC, CapDrvCaps, sizeof (CAPDRIVERCAPS));
?
3.2.5获得捕获窗口状态(Status)
下面例子使用SetWindowPos函数区设置捕获窗口的尺寸,这个尺寸的大小是基于输入的视频流大小的。输入视频流的尺寸大小由capGetStatus宏来获得,获得信息放在一个CAPSTATUS的数据结构体中。
?
CAPSTATUS CapStatus;
capGetStatus(hWndC, CapStatus, sizeof (CAPSTATUS));
SetWindowPos(hWndC, NULL, 0, 0, CapStatus.uiImageWidth,
CapStatus.uiImageHeight, SWP_NOZORDER | SWP_NOMOVE);
3.2.6显示对话框区设置视频属性
每个捕获驱动器都可以提高3个以上的不同对话框来控制数字视频的特性和捕获处理。下面的例子示范如何显示这些对话框。在显示每个对话框前,该例会调用capDriverGetCaps宏并且检查返回的CAPDRIVERCAPS对象来查看是否可以能够显示特定的对话框。
?
CAPDRIVERCAPS CapDrvCaps;
capDriverGetCaps(hWndC, CapDrvCaps, sizeof (CAPDRIVERCAPS));
// 视频源对话框
if (CapDriverCaps.fHasDlgVideoSource)
capDlgVideoSource(hWndC);
// 视频格式对话框
if (
文档评论(0)