一个不得不记的问题

        被这个问题困扰了两天了,好不爽,于是记下来,希望如果有人遇到同样问题,不要再受吃苦,顺便鄙视微软一下。
       问题是这样的,由于种种迫不得已的原因,用vs2003+direcshow做了个支持视频点播,在线视频播放,摄像头视频捕捉的小程序,设置void Cvp::DisplayVideoWin()
{
 CRect rc;
 if(m_pWin)
 {
  m_pWin->put_Owner((OAHWND)m_hWnd);
  m_pWin->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
  ::GetClientRect(m_hWnd,&rc);
  m_pWin->SetWindowPosition(rc.left, rc.top, rc.Width(), rc.Height());
  m_pWin->put_Visible(OATRUE);
 }
}

在播放本地视频时能显示,但播放点播文件时却不能显示,百思不得其解,于是百度一下,找到了 http://topic.csdn.net/t/20050418/10/3944903.html (这里顺便纠正下这位大哥的一点看法,经过我的试验,拖动窗口是不会发出WM_PAINR消息的)启发之下,便在play按钮事件末尾加了:
Sleep(1500);
CRect rc;
::GetWindowRect(m_hWnd,&rc);
MoveWindow(rc.left,rc.top,rc.Width(),rc.Height());
        发现播放mpeg(是mpeg1格式的)文件时,有了短暂的显示,喜。但后来播放avi格式的时候,发现不加这一句,便可显示出来,原来问题根本不在程序本身,一切只是mpeg格式文件给我们造成的假象。也就是说我们本来是没错的,错的是微软!这是他们的一个bug而已。所谓的Sleep(30),或Sleep(1500),只不过是给咱们的反映时间而已,
就像开始没有加上面这四句,窗口只是闪一下。

         这个程序结束后,我将彻底转投linux门下,与emacs为伴了。一定要好好学习,将来用自己写的包,靠别人的包为生,真是死都不知道怎么死的!

        被这个问题困扰了两天了,好不爽,于是记下来,希望如果有人遇到同样问题,不要再受吃苦,顺便鄙视微软一下。
       问题是这样的,由于种种迫不得已的原因,用vs2003+direcshow做了个支持视频点播,在线视频播放,摄像头视频捕捉的小程序,设置void Cvp::DisplayVideoWin()
{
 CRect rc;
 if(m_pWin)
 {
  m_pWin->put_Owner((OAHWND)m_hWnd);
  m_pWin->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
  ::GetClientRect(m_hWnd,&rc);
  m_pWin->SetWindowPosition(rc.left, rc.top, rc.Width(), rc.Height());
  m_pWin->put_Visible(OATRUE);
 }
}
播放本地文件时可以显示窗口,但播放点播文件时却不能。百思不得其解,于是百度了一下,找到
http://topic.csdn.net/t/20050418/10/3944903.html (这里顺便纠正下这位大哥的一点看法,经过本人试验,拖动窗口是不会引发WM_PAINT消息的),启发之下,便在play按钮事件末尾加了:
Sleep(1500);
CRect rc;
::GetWindowRect(m_hWnd,&rc);
MoveWindow(rc.left,rc.top,rc.Width(),rc.Height());
        发现播放mpeg(是mpeg1格式的)文件时,有了短暂的显示,喜。但后来播放avi格式的时候,发现不加这一句,便可显示出来,原来问题根本不在程序本身,一切只是mpeg格式文件给我们造成的假象。也就是说我们本来是没错的,错的是微软!这是他们的一个bug而已。所谓的Sleep(30),或Sleep(1500),只不过是给咱们的反映时间而已,
就像开始没有加上面这四句,窗口只是闪一下。

        这个程序结束后,我将彻底转投linux门下,与emacs为伴了。一定要好好学习,将来用自己写的包,靠别人的包为生,真是死都不知道怎么死的!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值