原来这个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
{
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
解决方案 »
- [TO jiangsheng]EXCEL插件开发工具选择
- 编写较为复杂的软件,有必要用基于单文档或多文档的应用程序吗
- 资源文件或资源符号是一个什么概念呀?能通俗的说说吗?我是新手
- 扩展DLL传递结构体的问题请教
- 关于匿名管道的问题?
- 关于矩形合并的问题?大虾来指点一下!
- 有控件实现 硬盘目录树结构的吗?
- 'unsigned short *' to 'char *'转换问题?
- 送分。用微软拼音输入法的繁体输入的汉字,内码是不是繁体的(big5)呀?
- ClistBox的字体颜色:)
- 本人做图形已有6年,今天遇到一个如何做大贴图的问题特来请教
- vs2008MFC应用程序中,为c**View类添加消息处理函数时没效果
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);
}
并保存为视频文件(前提是断开网络);
为此还特意花50RMB买了一个摄像头,呵呵
不知道是否可以实现
另外,DirectShow的视频捕获比VFW爽很多.