网站首页  |   业界社区  |  电信社区  |  技术社区   |  极客社区  |  游戏社区  |  生活社区   |   科技博客  |   同事录
TechWeb-技术社区


标题: [求助] evc 播放avi,没有图像
游客
该用户匿名发帖









发表于 2008-8-20 11:55
evc 播放avi,没有图像

void CNewAviTestDlg::OnButton1()  tech.techweb.com.cn)_1Q1u3^ ~/^;} U"T
{  TechWeb-技术社区#J(g4q1S2e'Q
// TODO: Add your control notification handler code here  
8S7N,m&|*ytech.techweb.com.cnIGraphBuilder  *m_pGraph;   
2k |!Q"e7L q    IMediaControl  *m_pControl;   
/K(q5d1A1B2x!E i+yTechWeb-技术社区    IMediaEventEx    *m_pEvent;    'q2P#h9z(O k
IVideoWindow  *m_pVideoWindow;  3d4F/L,Y7U6W8j;F
    CoInitialize(NULL);    8_'B4i#a#@1O8n:A
8Y7u'p1_)}/q
HWND  hWnd;  
1S$[%o7p6xhWnd = GetDlgItem(IDC_STATIC_MPEG)->m_hWnd;  
;b5s'A$~8nTechWeb-技术社区
)j4N.Q*\9~'zHRESULT hr;  
&g#m"}1B+{'T$[
-i;Z([,r%i!U!_.w5D    //free(); //Deletes any previous DirectShow instances  (K&L j9L;p,\/|8J:F!J
    hr = CoCreateInstance(CLSID_FilterGraph, NULL,CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&m_pGraph);  tech.techweb.com.cn0y)J+e1M2z6s:]
    if (!SUCCEEDED(hr))  
%Z&e$W3B$D!S{  
&N1C(c5Z-[8@9q H6A程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛MessageBox(_T("CoCreateInstance failed"));  
:f$q;Z.@(t/a5P}  
&}8{ z/k)B6e:k&d8O6|-c6{7ztech.techweb.com.cn    hr = m_pGraph->QueryInterface(IID_IMediaControl, (void **)&m_pControl);  
%b(j/_&H9}:^程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛    if (!SUCCEEDED(hr))  9n,` t!L5`#Z
{  
!x4K&`,_%_4k&T:rtech.techweb.com.cnMessageBox(_T("IID_IMediaControl failed"));  
'J(F$~3T7r,`5^0H:c/j"X'p程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛}  
0Y6J n*A2S(T&[5V    hr = m_pGraph->QueryInterface(IID_IMediaEventEx, (void **)&m_pEvent);  6H0O.V1i+_9X
    if (!SUCCEEDED(hr))  
.Z `1m6u,V7z{  
5r)^$w8E4o9hTechWeb-技术社区MessageBox(_T("IID_IMediaEventEx failed"));    tech.techweb.com.cn3T#R(h4@%R,K;J#x
}  3e;S8S3a2E)Y2y:H9_

2C8q!Q:E4R.x0E9u;o:e6R1V$OTechWeb-技术社区    hr = m_pEvent->SetNotifyWindow((OAHWND)hWnd, 0, 0);  '~.t6l0h&g9@&[%t7N'I0[
    if (!SUCCEEDED(hr))  tech.techweb.com.cn0n4V0n.w9O ~
{  
!f8a"^!n#m._$z;PTechWeb-技术社区MessageBox(_T("SetNotifyWindow  failed"));  TechWeb-技术社区-F:~:_&R*c4v:K8c
}  &^;Y*N ] n(~

"e&b4f1K)|2u9N1V1M;E4^$Z*Ltech.techweb.com.cn
)J9]6h4G"l'I(B*c(c1f&K0Atech.techweb.com.cn    hr = m_pGraph->RenderFile(_T("C\\爱我别走.avi"), NULL);  6C-_.q2a)j2o8K#a5o
    if (!SUCCEEDED(hr))  6f1A(@*T7L
{  程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛&i"p$Z/?,T l:\
MessageBox(_T("RenderFile  failed"));  程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛9U+L M&E+E+C6A!N;O
        //m_pMediaPlayerLog->WriteOut("RenderFile  failed,RESULT:0x%x",hr);  
*H6m;^)i9`#q}  6H4W+g5m'r)q+\2X7I
    hr = m_pGraph->QueryInterface(IID_IVideoWindow, (LPVOID *) &m_pVideoWindow);  2t4B4|3g%k)Y(q6^
    if (!SUCCEEDED(hr))  'l0W4i/]2\+o'd
{  -P(\ O9_6g6l#T)U(I$b%{%F
MessageBox(_T("IID_IVideoWindow  failed"));  
0V4x)f3\#u5K)l.itech.techweb.com.cn    }  tech.techweb.com.cn,g,p2f*Q;L6{&c8e+N(p0x

;Z0h1f:N4a'o$[tech.techweb.com.cnSetWindowLong(hWnd,GWL_STYLE,GetWindowStyle(hWnd)  ¦WS_CLIPCHILDREN);  !|;R7m0?/\*x0f,@0w,D
    hr = m_pVideoWindow->put_Owner((OAHWND)hWnd);// 这里报错,失败了  
-F7T2l:x6Z;R Z(Q*~    if (!SUCCEEDED(hr))  
8p4\ D%o6w:P&q&vtech.techweb.com.cn{  
!T&E%|;^#j#B  MessageBox(_T("put_Owner failed"));  
7^;B+L7f&g$?6e;j/R"`TechWeb-技术社区    }  程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛6V*r(H,]+?;z%A6]5S
    hr = m_pVideoWindow->put_WindowStyle(WS_CHILD  ¦WS_CLIPCHILDREN  ¦WS_CLIPSIBLINGS); //然后这里也会报错 ,失败了 (W%@3j"s J
    if (!SUCCEEDED(hr))   s(^6V'i2}4B
{  tech.techweb.com.cn+w"M0};`5N-h!m:a ?
MessageBox(_T("put_WindowStyle  failed"));  
5M'\(w-x)a0|6L/\9@TechWeb-技术社区        //m_pMediaPlayerLog->WriteOut("put_WindowStyle  failed,RESULT:0x%x",hr);  tech.techweb.com.cn4{)|+l$Y&d,E
}  tech.techweb.com.cn,v7a&p!r$U
    hr = m_pVideoWindow->put_MessageDrain((OAHWND)hWnd);//然后这里也会报错 ,失败了
;q(A1R0Q&X;|2@3`    if (!SUCCEEDED(hr))  程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛&A2r1B7a0T"~/\.k4T
{  程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛4c4b;E$q.|;t0T8l
MessageBox(_T("put_MessageDrain  failed"));  1C/W'A(x%k
    //m_pMediaPlayerLog->WriteOut("put_MessageDrain  failed,RESULT:0x%x",hr);  -o9q'n,_#~&A4N
}  'C1h3R7f"[
    hr = m_pVideoWindow->put_Visible(OATRUE); //最后是这里也会报错 ,失败了 TechWeb-技术社区0t4a4i!S.V-P
    if (!SUCCEEDED(hr))  TechWeb-技术社区$o*R+j E(@&d:`
{  6T&^1H6?*d!s0a
MessageBox(_T("put_Visible  failed"));  ,w$d._4O0z"O2r
    //m_pMediaPlayerLog->WriteOut("put_Visible  failed,RESULT:0x%x",hr);  tech.techweb.com.cn&u;z&|"H-H/^3N
}  
1L*t0i'A!N/H a2X6h2a5X:t(A5D-s.[
    RECT grc;  tech.techweb.com.cn"t#O;b7J#g
    GetClientRect(&grc);  程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛/e,?+T8Z#L"F.E)B4l
    m_pVideoWindow->SetWindowPosition(289,81,704,585);  )C,u"Q3_#m
    m_pVideoWindow->put_Visible(OATRUE);  ,V.S8}%j%G.D7i5p

:X5X*u%U;T"Qm_pControl->Run();  tech.techweb.com.cn"p.r7x+E/d;`*s

9z;G7?%M*N/i}  TechWeb-技术社区6m5Y$B#q#x:o#s5L4^'_
    哪位大侠能告诉我,我的m_pVideoWindow->put_Owner((OAHWND)hWnd),  
'{1L)H1f&E;R7s'b                          m_pVideoWindow->put_WindowStyle(WS_CHILD  ¦WS_CLIPCHILDREN  ¦WS_CLIPSIBLINGS);  tech.techweb.com.cn'f)y)E#J5r
                      m_pVideoWindow->put_MessageDrain((OAHWND)hWnd);  
(l(L&F6L9D                      m_pVideoWindow->put_Visible(OATRUE);  
2V0`-k4X,}+](J&V3I(@                    都错在哪里?谢谢!!!

引用 回复 顶部
游客
该用户匿名发帖









发表于 2008-8-20 11:55
报错,是什么错误呢?
"h$^2U&B*_1N,u1K L程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛LZ不会是想让大家猜是什么错误吧!

引用 回复 顶部
游客
该用户匿名发帖









发表于 2008-8-20 11:56
这位大侠说的是,我把出错的地方代码改成了输出错误代码信息了,如:程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛 g2|.Q"Q.B7Q"Y
hr = m_pVideoWindow->put_Owner((OAHWND)hWnd);//
"q8S+u8E9?5p,x    if (!SUCCEEDED(hr))tech.techweb.com.cn8Z4z%S0s6y0Z&^1c$W/@
{
1B!F5n&i+w9D  strError.Format(_T("put_Owner出错:%d"),GetLastError());TechWeb-技术社区3Y.@)X;H9u5Z6O'^)X+S
  MessageBox(strError);,d&C#I9o3b'D:g9L"E
    }TechWeb-技术社区4O!a:{)I6h1r3E-K9x*\#y!{
    hr = m_pVideoWindow->put_WindowStyle(WS_CHILD  &brvbarWS_CLIPCHILDREN  &brvbarWS_CLIPSIBLINGS);4P6k4i9J I%[9D'K#];O.s
    if (!SUCCEEDED(hr))4S+A7`7J8c!X1B&x(@ D
{
%A0i7{'j$G,I;x(J//MessageBox(_T("put_WindowStyle  failed"));
7o+_'z9y!i$[*i(P,^strError.Format(_T("put_WindowStyle出错:%d"),GetLastError());*Q+h(O1q&h+[2f)I:W
    MessageBox(strError);程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛,U#V2`*M)P,j8m:g
}
3}2@0V,I"a!w4e2E    hr = m_pVideoWindow->put_MessageDrain((OAHWND)hWnd);//将所有消息传给父窗体处理
P7K&D/T2[$J(A)x)mTechWeb-技术社区    if (!SUCCEEDED(hr))&y6{!?&N3?!Q5B0M,c/D
{
&j9Y:Q7O.x%V,V:k#z//MessageBox(_T("put_MessageDrain  failed"));
1J9h/f F,X4b:D6F(D1j L1STechWeb-技术社区        strError.Format(_T("put_MessageDrain出错:%d"),GetLastError());
%_9g)u U!? }    MessageBox(strError);9B8K0{"~3@,s(S"^4C)B
}tech.techweb.com.cn1f#v)i:K6B8s&q0C+w
    hr = m_pVideoWindow->put_Visible(OATRUE);2t.x-t$A:a N(Z"B!x
    if (!SUCCEEDED(hr))
*[7s,K)J8`#p)gTechWeb-技术社区{程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛/Q8`,@-h,k*^&@
//MessageBox(_T("put_Visible  failed"));"P+g!?*m3c+?"c%?1{7`
        strError.Format(_T("put_Visible出错:%d"),GetLastError());,w"J;L&i'S5?;j,q9?
    MessageBox(strError);程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛5d ]3g._)E0[7{.B.L
}
%?1O$h6b;j+^tech.techweb.com.cntech.techweb.com.cn+\(G l.h4s
    RECT grc;tech.techweb.com.cn a)f;s,Z o8d
    GetClientRect(&grc);5t:}8U.Y(|0]/M5X/d%H8S8k
    m_pVideoWindow->SetWindowPosition(289,81,704,585);
;f2?5J:g$v&atech.techweb.com.cn    m_pVideoWindow->put_Visible(OATRUE);,|3n"x$@'{ ]6J0Q

*D6N*o;V1E*x!{#l程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛    m_pControl->Run();
"t:L7z7q!U'g*XTechWeb-技术社区
6l,m-J4L2Z程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛输出的错误信息为:
%f&]']*M:mput_Owner出错: 0
*Z"y ^+~-{(xput_WindowStyle出错: 6程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛4A0?%S7P'f&_)o$P%s
put_MessageDrain出错:6
1t&c5a&N#b!iput_Visible出错: 6
9H M:a$j$T/[0R!M3B#A请大侠指教,非常感谢!谢谢!!!

引用 回复 顶部
游客
该用户匿名发帖









发表于 2008-8-20 11:56
看看这片文章。(u4E+S;Y%`*h"m)n7T/S+e

;T2\8w6x P'qtech.techweb.com.cnhttp://www.directshow.cn/site/?action-viewthread-tid-448

引用 回复 顶部
游客
该用户匿名发帖









发表于 2008-8-20 11:56
错误6,是句柄无效。;h#f1c&V2\ l G3X
LZ看看给的句柄是否正确呢?

引用 回复 顶部
游客
该用户匿名发帖









发表于 2008-8-20 11:56
还是想不通为什么put_Owner出错: 0,0代表什么呢?
1i&\5Q+a4P-dtech.techweb.com.cnTechWeb-技术社区+S F9`"b*X
put_WindowStyle出错: 68s.A5M*Z.O#j:P8S
put_MessageDrain出错:6%} \)l/~:h1x!?*b,X
put_Visible出错: 6程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛%w/d0@5y;K8B-o&~
为什么呢?函数返回句柄应该是HRESULT的呀,没有错呀。
&Q&v4A#e5|.?#C0U.E3|*x/p"c晕!!!
!W#D*W%\+R']8M:h3V,VTechWeb-技术社区还是请知道详情的大侠们帮帮忙,具体指导一下该怎么做。非常感谢!!!谢谢!

引用 回复 顶部
游客
该用户匿名发帖









发表于 2008-8-20 11:56
你的句柄名怎么这么怪啊,应该是this->m_hWnd;吧 hWnd是哪来的,而且也不用转换格式啊,0代表正常,你可以看看头文件里S_OK的定义

引用 回复 顶部
OKBEN
TW金牌会员
Rank: 6Rank: 6



UID 138713
精华 37
积分 1469
帖子 584
阅读权限 70
注册 2008-7-29
状态 离线
发表于 2008-8-20 11:56 资料 短消息 加为好友 添加 OKBEN 为MSN好友 通过MSN和 OKBEN 交谈
你的CLSID_FilterGraph初始化完成了没有,虽然我不懂这个,但是随手查了几个例子,
,[1Q2C%o/Y'E3W6P觉得你的初始化好像和它们不一样。tech.techweb.com.cn;\#^$w/H5y'u
不知道你仔细看了没有我给你的连接。
&d5t+s:B2{0q9c-T7T
&n:U F-Y.H e!T!u程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛还是想不通为什么put_Owner出错: 0,0代表什么呢?    ///0当然是代表有问题。为什么呢,肯定是你的代码不对+z2~7]1K4B/U!z s

-m&q!R1C Z"w,utech.techweb.com.cnput_WindowStyle出错: 6    //这几个6表示使用句柄无效,当然了。你使用的是put_Owner返回的无效句柄,肯定是返回这个错误代码了。
/f%F+L9L!p%H$P+n8]程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛put_MessageDrain出错:6                        
!U6b:u&j:]$hput_Visible出错: 6                           %a2|5j0q"r$w.~
为什么呢?函数返回句柄应该是HRESULT的呀,没有错呀。      //返回 HRESULT 难道就不能有错了?tech.techweb.com.cn'v2R t.E'H5`&J&\/i
-n5k3D!J*C Y V7e!Y
要多怀疑自己的代码,不要怀疑机制问题。流行的代码不可能这么容易被你找到BUG的。

引用 回复 顶部
游客
该用户匿名发帖









发表于 2008-8-20 11:56
TO: lenux 我看了http://www.directshow.cn/site/?action-viewthread-tid-448,结果发觉和我的差不多,也是那样的问题好像。而现在既然肯定是hr = m_pVideoWindow->put_Owner((OAHWND)hWnd);有问题,
;`%Q!o"N0s*n"h所以我把代码
!X6|'}+R+G:R1k ihr = m_pVideoWindow->put_Owner((OAHWND)hWnd);// tech.techweb.com.cn&q g%C"h,q:q/`;v'j'g
    if (!SUCCEEDED(hr))
!m$\;i#e)[+g5E{
6Q3{6J%p#i3w*C5X  strError.Format(_T("put_Owner出错:%d"),GetLastError());
&b4_/? u;X(i)J/D*m"L  MessageBox(strError);$E;^4P#K-@
} 0Q,[;Y![.V
改成了:,p"w({;A/?
hr = m_pVideoWindow->put_Owner((OAHWND)hWnd);//
!k*A+C6j6@-k!N    if (!SUCCEEDED(hr))
0q2}-[6y*o,y/E6}+wtech.techweb.com.cn{
)S0\#@)B(n1_tech.techweb.com.cn  strError.Format(_T("put_Owner出错:%x"),hr);/^3i/M9p,g#r
MessageBox(strError);tech.techweb.com.cn(U&M#H+~$f'C,O'|8X:G$W2L
strError.Format(_T("put_Owner出错:%d"),hr);
7P:L!n1a4g3j(n(q*j wTechWeb-技术社区MessageBox(strError);TechWeb-技术社区3?:z0J0F9K*w8L
strError.Format(hr);tech.techweb.com.cn8x5A/]!~/x1M%f
  MessageBox(strError);
$G)A:o+\6N5i$z$F2HTechWeb-技术社区    }
*[,i)a.U4A#r!M2p程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛察看输出结果:TechWeb-技术社区8L1N!a'o;T$s/I7D;T2f:Z3g
第一个对话框显示:put_Owner出错:80004002
![.L!u8q%c/UTechWeb-技术社区第二个对话框显示:put_Owner出错:-21474672625T1]+]5l6u2~
第三个对话框是空白
/u,~3X4X0{'[7B5T"w6C噢,对了,等所有的报错对话框都关闭(包括:put_WindowStyle出错: 6 put_MessageDrain出错:6           
:P/M$|!y+R E4W2Oput_Visible出错: 6 这三个对话框),最后听到卡的一声。没有其他的声音和图像。
X4x2[/r$z:@'?+atech.techweb.com.cn是不是因为返回的hr 是NULL阿?我查MSDN上只说Return Value,Returns an HRESULT value. 根本没有其他的说明。所以希望谁碰到过类似的问题或者代码请指教!
5^:U#u8O%Z#T9C,P在此真的谢谢大家的帮助!谢谢!

引用 回复 顶部
游客
该用户匿名发帖









发表于 2008-8-20 11:56
#define E_NOINTERFACE                    _HRESULT_TYPEDEF_(0x80004002L)
0a6~.V3K*P2a,Z r6\检查一下你的m_pVideoWindow和hWnd是否合法,再不行去流媒体开发版问问,这是dshow的问题

引用 回复 顶部
查看积分策略说明快速回复主题
选项 标题 Smilies
禁用 URL 识别
禁用 Smilies
禁用 Discuz!代码
使用匿名发帖
使用个人签名
接收新回复邮件通知
内容





当前时区 GMT+8, 现在时间是 2008-11-23 05:00
京ICP证060517号

本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.5.0 © 2001-2008 Comsenz Inc.
Processed in 0.062637 second(s), 7 queries

清除 Cookies - 联系我们 - TechWeb.com.cn - Archiver - WAP