各位帮忙,视频采集程序中的视频格式问题(急用)

huaboy408 2004-08-14 09:39:54
我利用网上的一段视频采集程序
http://www.codeguru.com/Cpp/misc/misc/video/article.php/c3771/

其中调整视频格式是直接调用capDlgVideoFormat来调整的,但是现在发现在调整分辨率时,从低往高调整,界面根本没有变化,只有关闭程序重新启动才会变化,另外从高往低调整界面才会变化,但是仍旧会残留一些视频窗口的框框,也就是说改变了视频格式中的分辨率后,界面没有即时刷新。我现在想实现让它即时变化,不要重启之后才能看出效果。

各位兄弟对视频采集比较熟悉的帮忙看看,现在急用,解决后重谢
...全文
141 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
huaboy408 2004-08-25
  • 打赏
  • 举报
回复
解决了,写了一个函数,供大家参考,同时谢谢DentistryDoctor(牙科医生)的热心参与!
LayoutVideo()
{
RECT rc;
RECT rcCap;
CAPSTATUS cs;
int cx, cy;
POINT ptScroll;

HWND hwnd = m_pWnd->GetSafeHwnd();

// get the x and y scroll pos so we can reset them
ptScroll.y = ::GetScrollPos(hwnd, SB_VERT);
ptScroll.x = ::GetScrollPos(hwnd, SB_HORZ);

::GetClientRect(hwnd, &rc);
if (!m_VFWImageProc.GetCapStatus(&cs))
{
// no current window? - make it 0 size
cs.uiImageWidth = 0;
cs.uiImageHeight = 0;

}

::SetRect(&rcCap, 0, 0, cs.uiImageWidth, cs.uiImageHeight);

// centre the window if requested and if room

if(m_bCenterVideo)
{
CRect Rect;
m_pWnd->GetClientRect(Rect);
cx = max(0, (Rect.Width() - (int) cs.uiImageWidth)/2);
cy = max(0, (Rect.Height() - (int) cs.uiImageHeight)/2);
Rect.OffsetRect(cx, cy);
m_VFWImageProc.EnablePreviewVideo(m_pWnd->GetSafeHwnd(), Rect.TopLeft().x,Rect.TopLeft().y,Rect.Width(),Rect.Height());
}
else
{
CRect Rect;
m_pWnd->GetClientRect(Rect);
m_VFWImageProc.EnablePreviewVideo(m_pWnd->GetSafeHwnd(), Rect.TopLeft().x,Rect.TopLeft().y);
}


m_pWnd->Invalidate(TRUE);
}
DentistryDoctor 2004-08-16
  • 打赏
  • 举报
回复
看看MSDN中示例vidcap32.
huaboy408 2004-08-16
  • 打赏
  • 举报
回复
顶上去,代码下载下来看看吧,不会浪费太多时间的,谢谢各位大侠!
huaboy408 2004-08-14
  • 打赏
  • 举报
回复
不是吧,没有一个人帮忙!
huaboy408 2004-08-14
  • 打赏
  • 举报
回复
UP

19,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧