登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

面包会有的

... ...

 
 
 

日志

 
 

VFW视频采集怎么设置图像的大小?  

2010-08-10 18:49:19|  分类: VFW |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

我通过下面API设置没有用,请问怎么设置呢?
capGetVideoFormat(m_hVideoWnd,&bitinfo,sizeof(BITMAPINFO));
bitinfo.bmiHeader.biHeight=rc.Height();
bitinfo.bmiHeader.biWidth=rc.Width();
capSetVideoFormat(m_hVideoWnd,&bitinfo,sizeof(BITMAPINFO));
[left]1[/left]img src=[qu]1[/qu]http://daohang.quanqiugou88.com/t/4.png[qu]1[/qu]  alt=[qu]1[/qu][qu]1[/qu] /[right]1[/right]
图像的大小只有这么大,没有在整个对话框内,另外我希望在对话框最大化的时候,图像也随着对话框变大,请大家帮忙看下,谢谢

主要程序代码:
(1)对话框初始化函数中:
          GetWindowRect(&rc);
        ScreenToClient(rc);       

        CAPDRIVERCAPS capd;
        CAPSTATUS     caps;
        BITMAPINFO    bitinfo;
            
        m_Event.ResetEvent();
     AfxBeginThread(ThreadFun,(void*)this);   //开始一个线程
       
        ::WaitForSingleObject(m_Event,INFINITE); //等待线程函数的执行  
        if (capDriverConnect(m_hVideoWnd,0))         //连接驱动程序
        {
                capDriverGetCaps(m_hVideoWnd,sizeof(CAPDRIVERCAPS),&capd);
                capGetStatus(m_hVideoWnd,&caps,sizeof(CAPSTATUS));

                ::SetParent(m_hVideoWnd,*this);      //设置父窗口
                ::SetWindowLong(m_hVideoWnd,GWL_STYLE,WS_CHILD);
                ::SetWindowPos(m_hVideoWnd,NULL,rc.left,rc.top,
                        rc.Width(),rc.Height(),SWP_NOZORDER);
               
                ::ShowWindow(m_hVideoWnd,SW_SHOW);
                capGetVideoFormat(m_hVideoWnd,&bitinfo,sizeof(BITMAPINFO));
         bitinfo.bmiHeader.biHeight=rc.Height();
                bitinfo.bmiHeader.biWidth=rc.Width();
         capSetVideoFormat(m_hVideoWnd,&bitinfo,sizeof(BITMAPINFO));
                capPreviewRate(m_hVideoWnd,30); //设置预览速率
                capPreview(m_hVideoWnd,true);        //开始预览

        }
        else
        {
                AfxMessageBox([qu]1[/qu]创建失败[qu]1[/qu]);
        }
(2)线程函数
UINT CCapVideoDlg::ThreadFun( LPVOID lpParam )
{
        CCapVideoDlg* pTempDlg = (CCapVideoDlg*)lpParam;
        if (pTempDlg!= NULL)
        {
                HWND hwnd= capCreateCaptureWindow(NULL,WS_POPUP,0,0,100,50,pTempDlg-[right]1[/right]m_hWnd,0);
                pTempDlg-[right]1[/right]m_hVideoWnd = hwnd;
                pTempDlg-[right]1[/right]m_Event.SetEvent();
               
                MSG msg;
                while(GetMessage(&msg,NULL,0,0))
                {
                        TranslateMessage(&msg);
                        DispatchMessage(&msg);               
                }
                return msg.wParam;
        }
        return 0;
}

 

=========================

HWND VFWAPI capCreateCaptureWindow(
   LPCSTR lpszWindowName,   
   DWORD dwStyle,           
   int x,                  
   int y,                  
   int nWidth,              
   int nHeight,            
   HWND hWnd,               
   int nID                  
);
这个函数的第五,六个参数指定宽度和高度。

 

======

  评论这张
 
阅读(1413)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018