在本文中,我们将深入探讨如何使用Visual FoxPro 9 (VFP9)结合Video for Windows (VFW) 技术来实现音视频录制,并解决如何禁用鼠标左右键的终止录像功能的问题。VFP9虽然不支持直接使用结构类型,但我们可以采用一些技巧来绕过这个限制。
我们要理解VFW中的捕获参数CPARA。这是一个包含多个配置选项的结构,用于控制视频捕获的过程,如帧率、是否显示确认对话框、丢帧容忍度等。在VFP9中,由于没有内置的结构类型,我们需要手动处理这些参数。通过定义转换函数和读取参数的函数,我们可以将这些参数以字符串形式传递给VFW API。
1. **转换函数**:`sTObLPARAMETERS` 这个函数的作用是将字符串`s`转换为一个Long型数值。它遍历字符串的每个字符,将ASCII值乘以适当的256的幂,然后累加,最终得到一个Long数值。这是为了将多个参数组合成一个Long值,以便传递给VFW API。
2. **读取参数函数**:`VFPGetCPARA()` 这个函数创建了一个二维数组`CPARA`,用于存储捕获参数的名称及其对应的值。每个参数都有一个描述字符串和对应的数值。例如,`dwRequestMicroSecPerFrame` 控制期望的帧播放率,`fMakeUserHitOKToCapture` 决定是否在捕获前显示确认对话框,等等。函数会填充这个数组,并将所有参数值合并到一个字符串`CPARA_Info`中,以便后续调用VFW API。
在实际的录像过程中,我们可能会遇到鼠标点击导致录像终止的问题。通常,VFW默认配置允许用户通过点击鼠标左键或右键来终止录像。要关闭这个功能,我们需要修改`CPARA`结构中的相应参数。例如,`fAbortLeftMouse` 和 `fAbortRightMouse` 分别对应鼠标左键和右键的终止行为,将其设置为FALSE可以禁止这两个动作终止录像。
在设置好参数后,我们可以通过`SendMessage`函数将这些参数传递给VFW的窗口句柄`hWndC`,消息ID为`1024+65`,参数是经过转换的`CPARA_Info`。这样,VFW将按照我们设定的参数进行视频捕获,而不会受到鼠标点击的影响。
在处理VFW捕获时,还需要注意一些其他的细节。例如,`fCaptureAudio` 参数控制是否同时录制音频,`wNumVideoRequested` 和 `wNumAudioRequested` 分别指定可分配的视频和音频缓冲区的数量,以保证录制的流畅性。此外,`fLimitEnabled` 和 `wTimeLimit` 可以用来设置捕获的时间限制,`fMCIControl` 和相关参数则是关于MCI设备的控制选项。
利用VFP9和VFW技术进行音视频录制,需要深入了解VFW的捕获参数,以及如何在VFP9的环境中传递这些参数。通过自定义函数和数组,我们可以有效地管理这些参数,实现定制化的录制设置,同时解决了鼠标点击终止录像的问题。