调用线程播放WMP的问题

cds27 2009-07-06 06:09:53
我有一个CSampleDlg对话框窗体,然后在其中插入一个Windows media player(简程WMP)的ActiveX,再右键点wmp弹出菜单,点“添加变量”生成wmp的类。然后我在一个OnBnClickedButton2中,如果直接调用注释的代码,可以正常的播放e:/ad.avi。如果我调用线程播放,却无法播放,也没有错误提示。
会是什么问题呢?


UINT f(LPVOID p)
{
CSampleDlg* dlg=(CSampleDlg*)p;
dlg->wmp.put_URL(L"e:/ad.avi");
LPDISPATCH lp = dlg->wmp.get_controls();
CComQIPtr<IWMPControls> c=lp;
c.p->play();
c.Release();
return 0;
}

void CSampleDlg::OnBnClickedButton2()
{
AfxBeginThread((AFX_THREADPROC)f, this);

//wmp.put_URL(L"e:/ad.avi");
//LPDISPATCH lp = wmp.get_controls();
//CComQIPtr<IWMPControls> c=lp;
//c.p->play();
//c.Release();
}
...全文
40 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2009-07-06
  • 打赏
  • 举报
回复
线程中最好不要支持操作UI对象等,可以线程中发送消息给主线程,然后主线程中调用OnBnClickedButton2()等来操作控件

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧