前两篇已经实现了视频捕获,显示,控制显示大小和速率
这一篇的目标是将捕获的视频放到一个矩形的窗口中显示
1)在资源试图中的Dialog中增加一个Picture Control 控件,设置该控件的属性
状态为:带边框,有凹陷
类型为:矩形
2)为该控件添加变量 CStatic m_CapPicture
3)在Ctest1Dlg::OnInitDialog中增加如下代码
CRect rc;
m_CapPicture.GetClientRect(rc);
m_CapPicture.MapWindowPoints(this,rc);
m_hWndVideo = capCreateCaptureWindow(NULL,WS_POPUP,1,1,rc.Width(),rc.Height(),m_hWnd,0);
if(capDriverConnect(m_hWndVideo,0))
{
::SetParent(m_hWndVideo,*this);
::SetWindowLong(m_hWndVideo,GWL_STYLE,WS_CHILD);
::SetWindowPos(m_hWndVideo,NULL,rc.left,rc.top,rc.Width(),rc.Height(),SWP_NOZORDER);
::ShowWindow(m_hWndVideo,SW_SHOW);
capGetVideoFormat(m_hWndVideo, &m_bmpinfo, sizeof(m_bmpinfo));
m_bmpinfo.bmiHeader.biWidth = IMAGE_WIDTH;
m_bmpinfo.bmiHeader.biHeight = IMAGE_HEIGHT;
capSetVideoFormat(m_hWndVideo, &m_bmpinfo, sizeof(m_bmpinfo));
capPreviewRate(m_hWndVideo,10);
capPreview(m_hWndVideo,TRUE);
}
else
{
MessageBox(_T("Connection a capture driver error!"));
}
4)测试运行,发现视频在矩形中没有按比例全部显示出来
5)增加支持按比例显示的语句
在上面的capPreview(m_hWndVideo,TRUE);语句后面再加一条
capPreviewScale(m_hWndVideo,TRUE);
总结:在本篇解决了在矩形图片控件中显示,并且按比例显示