网页录像控件的制作(VFW)

本文介绍如何使用MFC制作ACTIVEX录像控件,包括创建工程、动态添加对话框资源及实现录像、预览等功能的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本例子实现MFC ACTIVEX录像控件
制作步骤
首先,建立MFC ACTIVEX 工程,然后在OnCreate函数中动态添加对话框资源
int CMYSoftRecordCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: Add your specialized creation code here
    
CMydialog* pDialog;

//pDialog initialized to NULL in the constructor of CMyWnd class.
pDialog = new CMydialog();
//Check if new succeeded and a valid pointer to a dialog object is   //created.
if(pDialog != NULL)
{
BOOL ret = pDialog->Create(IDD_DIALOG_VIEW,this);
if(!ret)  //Create failed.
AfxMessageBox("Error creating Dialog");
pDialog->ShowWindow(SW_SHOW);
}
else
AfxMessageBox("Error Creating Dialog Object");



return 0;
}

其次,生成类CMydialog,实现以下函数:
//预览。。。
void CMydialog::OnButtonPreview() 
{
hWnd = ::GetDlgItem(this->m_hWnd, IDC_STATIC_SCREEN);
hwndVideo = capCreateCaptureWindow("Capture",WS_CHILD|WS_VISIBLE,0,0,800,600,hWnd,0);
::SendMessage( hwndVideo, WM_CAP_DRIVER_CONNECT, 0, 0L); 
::SendMessage( hwndVideo, WM_CAP_DRIVER_GET_CAPS,
sizeof(CAPDRIVERCAPS), (LONG) (LPVOID) &CapDrvCaps);
capPreviewRate( hwndVideo, 66 );
capPreview( hwndVideo, TRUE );
}
//录像。。。
void CMydialog::OnButtonRecord() 
{
char szCaptureFile[100];
CString capfile;
CFileDialog Dlg(FALSE,"AVI",".AVI",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"视频文件(*.AVI)|*.AVI||");
if(Dlg.DoModal()==IDOK)
{   
capfile = Dlg.GetPathName();
strcpy(szCaptureFile, (LPCTSTR)capfile); 
}
capFileSetCaptureFile(hwndVideo, szCaptureFile);//VFW默认生成c:/example.avi,去掉它....
capDlgVideoCompression(hwndVideo);
capCaptureSequence(hwndVideo); 
capFileSaveAs(hwndVideo, szCaptureFile);

}
//停止预览。。。
void CMydialog::OnButtonStopreview() 
{
capPreview(hwndVideo, FALSE);
    capDriverDisconnect(hwndVideo);
Sleep(500);
}
//停止录像。。。
void CMydialog::OnButtonStoprecord() 
{
capCaptureStop(hwndVideo);
capCaptureAbort(hwndVideo);
Sleep(500);
}
//视频属性页。。。
void CMydialog::OnButtonEditstream() 
{
capDlgVideoFormat(hwndVideo);
capGetStatus(hwndVideo, &CapStatus, sizeof(CAPSTATUS));
::SetWindowPos(hwndVideo, NULL, 0, 0, CapStatus.uiImageWidth,
CapStatus.uiImageHeight, SWP_NOZORDER | SWP_NOMOVE);

}
//视频源。。。
void CMydialog::OnButtonEditsource() 
{
 if(CapDrvCaps.fHasDlgVideoSource)
  capDlgVideoSource(hwndVideo);

}
界面如下:

注册完控件后在网页中的用法:
<HTML>
<HEAD>
<TITLE>New Page</TITLE>
</HEAD>
<BODY>

<OBJECT ID="MYSoftRecord" WIDTH=665 HEIGHT=412
 CLASSID="CLSID:2DA4192A-E327-4DDA-85A7-C49CAD8F16D4">
    <PARAM NAME="_Version" VALUE="65536">
    <PARAM NAME="_ExtentX" VALUE="17590">
    <PARAM NAME="_ExtentY" VALUE="10896">
    <PARAM NAME="_StockProps" VALUE="0">
</OBJECT>

</BODY>
</HTML>
此例子没有暴露自定义接口,制作过程相当于MFC EXE程序。 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值