我通过下面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
);
这个函数的第五,六个参数指定宽度和高度。
======