DirectShow在播放视频时,默认会蹦出一个视频窗口来.
貌似我们不能让他在指定的窗体中播放,那我们可以把他放在其他窗体中,作为子窗体.
IVideoWindow::put_Owner似乎是可以用的方法,但是它却又一些注意点和技巧.有些是MSDN没有提及的:
1. put_Owner方法必须在Stream流已经生存的情况下才能使用.一般在IGraphBuilder::RenderFile和IGraphBuilder::Run之间比较合适.
2. 利用IVideoWindow::put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS);来让窗体看上去像是一个播放器的视频部分.当然还有IVideoWindow::SetWindowPosition方法
3. 在Filter Graph Manager的Release之前put_Owner为NULL.不然会很惨...(会给代替带来N多垃圾消息,详见MSDN)
Wednesday, January 21, 2009
Subscribe to:
Post Comments (Atom)
基本的小程序
ReplyDelete在Visual Basic中克隆或复制ADO记录集