原来这个vfw视频是基于对话框的,相关代码如下:
BOOL CTVMeetingDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SLocal=(CStatic *)GetDlgItem(IDC_VLocal);//IDC_VLocal是picture控件
InitAV();
return TRUE;
}现在我想把它移到文档类型下实现。我新建了一个CVideoDlg窗体,同样放置了一个picture控件IDC_VLocal,
在MainFrame.h声明: CVideoDlg videodlg[5];//显示5个视频浮动窗体。
窗体创建没问题,接下来就是怎么显示视频的问题了,我想用下面的方法显示第一个视频:
int CMainFrame::OnCreate( LPCREATESTRUCT lpCreateStruct )
{
if ( CFrameWnd::OnCreate( lpCreateStruct ) == -1 ) return -1;
SLocal=(CStatic *)this->videodlg[0].GetDlgItem(IDC_VLocal); InitAV();
return 0;
} 但是编译没错!!但是运行程序还没出现视频就崩溃了。这个问题困扰很久了,没办法请高手帮忙,报酬没问题,说到做到。谢谢!!
源码下载地址:http://www.yuanshengkj.com/bbs/topic.asp?topic_id=1831&forum_id=39
BOOL CTVMeetingDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SLocal=(CStatic *)GetDlgItem(IDC_VLocal);//IDC_VLocal是picture控件
InitAV();
return TRUE;
}现在我想把它移到文档类型下实现。我新建了一个CVideoDlg窗体,同样放置了一个picture控件IDC_VLocal,
在MainFrame.h声明: CVideoDlg videodlg[5];//显示5个视频浮动窗体。
窗体创建没问题,接下来就是怎么显示视频的问题了,我想用下面的方法显示第一个视频:
int CMainFrame::OnCreate( LPCREATESTRUCT lpCreateStruct )
{
if ( CFrameWnd::OnCreate( lpCreateStruct ) == -1 ) return -1;
SLocal=(CStatic *)this->videodlg[0].GetDlgItem(IDC_VLocal); InitAV();
return 0;
} 但是编译没错!!但是运行程序还没出现视频就崩溃了。这个问题困扰很久了,没办法请高手帮忙,报酬没问题,说到做到。谢谢!!
源码下载地址:http://www.yuanshengkj.com/bbs/topic.asp?topic_id=1831&forum_id=39
int CMainFrame::OnCreate( LPCREATESTRUCT lpCreateStruct )
{
if ( CFrameWnd::OnCreate( lpCreateStruct ) == -1 ) return -1;
SLocal=(CStatic *)this; InitAV();
return 0;
}
void CMainFrame::OnVideoData(CStatic* Rect,char* Video)
{
RECT rc;
Rect->GetClientRect(&rc);
HDC hdc=::GetDC(Rect->m_hWnd);
HBITMAP m_hBmp=CreateCompatibleBitmap(hdc,rc.right,rc.bottom);
HDC hMemDC=CreateCompatibleDC(hdc);
HBITMAP hob=(HBITMAP)SelectObject(hMemDC,m_hBmp);
if(hob)
{
char* p;
p=Video;
BITMAPINFOHEADER* pbih=&m_CodecMgr.m_BmpU.bmiHeader;
HDRAWDIB h=DrawDibOpen();
DrawDibDraw(h,hMemDC,0,0,rc.right,rc.bottom,pbih,p,0,0,pbih->biWidth,pbih->biHeight,DDF_NOTKEYFRAME);
DrawDibClose(h);
BitBlt(hdc,0,0,rc.right,rc.bottom,hMemDC,0,0,SRCCOPY);
SelectObject(hMemDC,hob);
pbih=NULL;
delete pbih;
}
DeleteDC(hMemDC);
::ReleaseDC(Rect->m_hWnd,hdc);
DeleteObject(m_hBmp);
}
http://snipurl.com/cppcode8828