酱坛子

专注C++技术 在这里写下自己的学习心得 感悟 和大家讨论 共同进步(欢迎批评!!!)

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  65 Posts :: 16 Stories :: 236 Comments :: 0 Trackbacks

公告

王一伟 湖南商学院毕业 电子信息工程专业

常用链接

留言簿(19)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 358075
  • 排名 - 55

最新随笔

最新评论

阅读排行榜

评论排行榜

 CWnd* pWnd;
 CRect rectWMP;
 pWnd = GetDlgItem(IDC_STATIC); 
 pWnd->GetWindowRect(&rectWMP);
 CWMPPlayer4* player = new  CWMPPlayer4;
 player->Create("",WS_CHILD|WS_VISIBLE,rectWMP,pWnd,IDC_OCX1);

 player->put_URL(_T("E:\\CIMG2137.AVI"));
 
 CWMPControls* control = (CWMPControls*)player->get_controls();
  control->Pause();

执行到最后一行的时候就挂了,我检查了一下control不为空,查了很多资料也没对这个问题进行过阐述,各位大虾有什么好主意没有。
注:player的各个函数的使用都是正确的,但是从player里面获取的其他接口的实例使用就有问题了。

posted on 2006-10-25 01:25 @王一伟 阅读(2526) 评论(9)  编辑 收藏 引用

Feedback

# re: 求助,大虾们路过帮小弟 看看 2006-10-25 13:15 廖志成
我曾经碰到过这样一个问题,不知道对你有没有帮助:
在主线程里面创建了一个非模态窗口,当我试图从另外一个线程里面删除该窗口的时候出错。
比如,在另一个线程里面得到了该非模态窗口指针pWnd,在该线程里面销毁窗口
pWnd->DestroyWindow() //出错

CWnd::DestroyWindow()有这样一行代码

BOOL CWnd::DestroyWindow()
{
.......
.......
if (m_hWnd != NULL)
{
pMap = afxMapHWND();
ASSERT(pMap != NULL);//出错
..........

}

........
return bResult;
}
afxMapHWND函数里面有如下代码:

AFX_MODULE_THREAD_STATE* pState = AfxGetModuleThreadState();
取得线程的状态,该线程不是主线程,而是另外一个与界面无关的线程,而导致接下来的判断出错。

我也不太清楚我碰到的这个问题是不是可以这样解释!希望有可以借鉴之处  回复  更多评论
  

# re: 求助,大虾们路过帮小弟 看看 2006-10-25 14:45 王一伟
media player 有没有使用多线程呢,这个我不太清楚

你出错的原因是不是因为重复销毁导致的,assert(pMap !- NULL)的时候pMap是否已经为无效指针,不能与NULL进行比较了  回复  更多评论
  

# re: 求助,大虾们路过帮小弟 看看 2006-10-25 15:35 泡泡牛
CWMPControls* control = (CWMPControls*)player->get_controls();

这个有问题吧, 你确定player->get_controls() 返回的是CWMPControls* ?

  回复  更多评论
  

# re: 求助,大虾们路过帮小弟 看看 2006-10-25 16:40 王一伟
这个是
函数定义是这样的

LPDISPATCH get_controls()
{
LPDISPATCH result;
InvokeHelper(0x4, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, NULL);
return result;
}

强转为CWMPControl* , 应该是对的  回复  更多评论
  

# re: 求助,大虾们路过帮小弟 看看 2006-10-25 16:44 王一伟
其实我要实现的就是在MFC的dialog上拖一个window media player控件,然后能播放,控制,和设置播放状态。现在遇到的麻烦就是,创建了CWMPPlayer4 ,但是CWMPControls和CWMPSetting使用不了,我晚上回家把工程打包,哪位大哥要是会的话帮我看看留个E-mail,谢谢了,也可以直接加我QQ:77810682  回复  更多评论
  

# re: 求助,大虾们路过帮小弟 看看 2006-10-26 08:58 王一伟
我已经解决问题了,谢谢泡泡牛
player->get_controls() 返回的是LPDISPATCH
要获得CWMPControls*的话必须这样
CWMPControls* control = new CWMPControls(player->get_control());

hehe,同样谢谢廖志成兄弟

注意的是:CWMPControls或者CWMPSetting都必须继承自COleDispatchDriver否则不能通过LPDIPATCH构造.

结贴咯!!  回复  更多评论
  

# re: ��������Ϻ��·����С�� ���� 2007-10-05 11:26 123
上面的程序  回复  更多评论
  

# re: 求助,大虾们路过帮小弟 看看 2011-03-03 13:33 tlhacker
我试试,我也碰到了这个问题了  回复  更多评论
  

# re: 求助,大虾们路过帮小弟 看看 2011-03-03 13:33 tlhacker
我试试  回复  更多评论
  


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理