⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_25651.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:25651 发表者:笨蛋 发表日期:2002-12-24 16:00:28
<br>主题:SetFileName为什么不能生成预期的文件?
<br>内容:请帮忙看看:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hr=CoCreateInstance(CLSID_FileWriter,NULL,CLSCTX_INPROC_SERVER,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IID_IFileWriter,(void**)&amp;pWriter);<BR>&nbsp;&nbsp;&nbsp;&nbsp;pSink-&gt;QueryInterface(IID_IFileSinkFilter, (void**)&amp;pSink);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(SUCCEEDED(hr))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hr=pGraphBuilder-&gt;AddFilter (pWriter,L"file writer");<BR>&nbsp;&nbsp;&nbsp;&nbsp;hr=pSink-&gt;SetFileName (L"d:\\myfile.avi",NULL);<BR>按理说,运行后应该生成文件:myfile,可是程序运行并没有生成,为什么?谢谢<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:super 回复日期:2002-12-24 16:24:22
<br>内容:你的代码本来就写错了啊。<BR>比如:pSink-&gt;QueryInterface(IID_IFileSinkFilter, (void**)&amp;pSink);<BR>这一行中pSink既然没有值,如何能调用Query??<BR><BR>正确写法是:<BR>hr=CoCreateInstance(CLSID_FileWriter,NULL,CLSCTX_INPROC_SERVER,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IID_IFileSinkFilter,(void**)&amp;pSink);<BR>pSink-&gt;QueryInterface(IID_IFileWriter, (void**)&amp;pWriter);<BR>if(SUCCEEDED(hr))<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;hr=pGraphBuilder-&gt;AddFilter (pWriter,L"file writer");<BR>&nbsp;&nbsp;&nbsp;&nbsp;hr=pSink-&gt;SetFileName (L"d:\\myfile.avi",NULL);<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:禽兽 回复日期:2002-12-24 18:39:59
<br>内容:pWriter-&gt;QueryInterface(IID_IFileWriter, (void**)&amp;pSink);<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:super 回复日期:2002-12-24 20:16:13
<br>内容:IID_IFileWriter的结果指针不是IFileSinkFilter
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:笨蛋 回复日期:2002-12-24 20:24:01
<br>内容:呵呵,我是笔误,我的代码是正如guanbo所说的那样,我也曾象super那样改过,但是结果还是不行
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:禽兽 回复日期:2002-12-24 22:05:32
<br>内容:不好意思,剪贴复制没有仔细看.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:super 回复日期:2002-12-24 22:36:12
<br>内容:你先确定你用到的filter可以在graphedit中构造出来,检查是不是其他地方出错了,正常情况在AddFilter时就产生一个空的文件了。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:笨蛋 回复日期:2002-12-25 10:57:29
<br>内容:在graphedit中构造出来的FILTER没有问题,连接也是正确的,可是就是没有生成文件,还可能是什么地方出错呢?请指教哦
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:super 回复日期:2002-12-25 13:34:38
<br>内容:判断AddFilter和其他操作的返回值是否正确,不行就贴出全部相关代码
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:笨蛋 回复日期:2002-12-25 15:11:01
<br>内容:IBaseFilter *pFileSourceFilter = NULL;<BR>IBaseFilter*pAviDest = NULL,*pWriter = NULL;&nbsp;&nbsp;&nbsp;&nbsp;IFileSinkFilter *pSink= NULL;<BR>IGraphBuilder *pGraphBuilder;<BR>HRESULT&nbsp;&nbsp;hr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;IEnumPins *pEnum;<BR>// TODO: Add your control notification handler code here<BR>CoInitialize(NULL);<BR>CoCreateInstance<BR>(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,<BR>IID_IGraphBuilder,(void**)&amp;pGraphBuilder);<BR>&nbsp;&nbsp;&nbsp;&nbsp;////<BR>hr=CoCreateInstance(CLSID_AsyncReader,NULL,CLSCTX_INPROC_SERVER,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IID_IBaseFilter,(void**)&amp;pFileSourceFilter);<BR>&nbsp;&nbsp;&nbsp;&nbsp; //<BR>if(pFileSourceFilter)<BR><BR>hr=pGraphBuilder-&gt;AddSourceFilter(L"D:\\avi.avi",L"FileSource",&amp;pFileSourceFilter);<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Add the AVI mux and the File Writer.<BR>&nbsp;&nbsp;&nbsp;&nbsp;hr=CoCreateInstance(CLSID_AviDest, NULL, CLSCTX_INPROC_SERVER,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IID_IBaseFilter, (void**)&amp;pAviDest);<BR>if(SUCCEEDED(hr))<BR>if(pAviDest)<BR>pGraphBuilder-&gt;AddFilter(pAviDest,L"avidest");<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;CoCreateInstance(CLSID_FileWriter, NULL, CLSCTX_INPROC_SERVER,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IID_IBaseFilter, (void**)&amp;pWriter);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(pWriter)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hr=pGraphBuilder-&gt;AddFilter(pWriter,L"writer");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Set the file name.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pWriter-&gt;QueryInterface(IID_IFileSinkFilter, (void**)&amp;pSink);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//#<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(pSink)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hr=pSink-&gt;SetFileName(L"D:\\myfile.avi", NULL);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;IPin *pOut = GetPin(pFileSourceFilter, PINDIR_OUTPUT); <BR>&nbsp;&nbsp;&nbsp;&nbsp;if (pOut) <BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IPin *pIn=GetPin(pAviDest,PINDIR_INPUT);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hr=pGraphBuilder-&gt;Connect(pOut,pIn);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IPin *pOut2 = GetPin(pAviDest, PINDIR_OUTPUT); <BR>&nbsp;&nbsp;&nbsp;&nbsp;if (pOut2) <BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IPin *pIn2 = GetPin(pWriter, PINDIR_INPUT);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pGraphBuilder-&gt;ConnectDirect(pOut2, pIn2, NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR><BR><BR><BR>static IPin* GetPin( IBaseFilter* pFilter, PIN_DIRECTION dir )<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;IEnumPins*&nbsp;&nbsp;pEnumPins = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IPin*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pPin = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if( pFilter )<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pFilter-&gt;EnumPins( &amp;pEnumPins );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if( pEnumPins != 0 )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(;;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;&nbsp;cFetched = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIN_DIRECTION pinDir = PIN_DIRECTION(-1); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPin = 0;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pEnumPins-&gt;Next( 1, &amp;pPin, &amp;cFetched );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if( cFetched == 0 || pPin == 0 ) break;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPin-&gt;QueryDirection( &amp;pinDir );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if( pinDir == dir ) break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPin-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pEnumPins-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;return pPin;<BR>}<BR><BR>以上就是主要代码,多谢指教!&nbsp;&nbsp;&nbsp;&nbsp;<BR>2002-12-25 15:37:37

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -