我想做一个播放器,大致过程如下:
新建一个基于对话框的mfc应用程序,在右击工具栏-》选择项-》com组件-》Windows Media Player,这样添加了播放器控件,加了一堆按钮,然后右键项目-》添加类-》ActiveX中的MFC类,这之后有两个选项:1,注册表,2,文件。我在注册表里没找到Media Player,在文件选项里找到了c:\windows\system32\msdxm.tlb,然后成功的添加了Windows Media Player类,然后添加“打开”按钮事件响应:
char szFileFilter[]=
"All File(*.*)|*.*||"
"Mp3 File(*.mp3)|*.mp3|"
"Wma File(*.wma)|*.wma|"
"Video File(*.dat)|*.dat|"
"Wave File(*.wav)|*.wav|"
"AVI File(*.avi)|*.avi|"
"Movie File(*.mov)|*.mov|"
"Media File(*.mmm)|*.mmm|"
"Mid File(*.mid;*,rmi)|*.mid;*.rmi|"
"MPEG File(*.mpeg)|*.mpeg|";
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);
if(dlg.DoModal()==IDOK)
{
CString PathName=dlg.GetPathName();
PathName.MakeUpper();
m_MediaPlayer.Open(PathName);
}
编译执行,单击打开,选择了一个wna文件确定后出现错误:
debug assertion failed
程序停止在 ASSERT(m_pCtrlSite != NULL); // not an OLE control (not yet, at least)
把项目的属性debug改为release后,选择一个wma文件后程序没有反应
不知道要在程序中调用Media Player需要做些什么,还有:
1,我已经在命令行里面输入RegSvr32 C:\windows\system32\msdxm.ocx,并且提示已经成功,为什么在添加类时的注册表选项里找不到Windows Media Player呢?
2,我在C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin目录下执行aximp c:\windows\system32\msdxm.ocx时提示错误:加载类型库/dll时出错,(异常来自异常来自 HRESULT:0x80029C4A (TYPE_E_CANTLOADLIBRARY )
这些天一直都在搞播放器,也一直都没搞明白,希望大牛帮忙解答疑惑,不甚感激!谢谢!
新建一个基于对话框的mfc应用程序,在右击工具栏-》选择项-》com组件-》Windows Media Player,这样添加了播放器控件,加了一堆按钮,然后右键项目-》添加类-》ActiveX中的MFC类,这之后有两个选项:1,注册表,2,文件。我在注册表里没找到Media Player,在文件选项里找到了c:\windows\system32\msdxm.tlb,然后成功的添加了Windows Media Player类,然后添加“打开”按钮事件响应:
char szFileFilter[]=
"All File(*.*)|*.*||"
"Mp3 File(*.mp3)|*.mp3|"
"Wma File(*.wma)|*.wma|"
"Video File(*.dat)|*.dat|"
"Wave File(*.wav)|*.wav|"
"AVI File(*.avi)|*.avi|"
"Movie File(*.mov)|*.mov|"
"Media File(*.mmm)|*.mmm|"
"Mid File(*.mid;*,rmi)|*.mid;*.rmi|"
"MPEG File(*.mpeg)|*.mpeg|";
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);
if(dlg.DoModal()==IDOK)
{
CString PathName=dlg.GetPathName();
PathName.MakeUpper();
m_MediaPlayer.Open(PathName);
}
编译执行,单击打开,选择了一个wna文件确定后出现错误:
debug assertion failed
程序停止在 ASSERT(m_pCtrlSite != NULL); // not an OLE control (not yet, at least)
把项目的属性debug改为release后,选择一个wma文件后程序没有反应
不知道要在程序中调用Media Player需要做些什么,还有:
1,我已经在命令行里面输入RegSvr32 C:\windows\system32\msdxm.ocx,并且提示已经成功,为什么在添加类时的注册表选项里找不到Windows Media Player呢?
2,我在C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin目录下执行aximp c:\windows\system32\msdxm.ocx时提示错误:加载类型库/dll时出错,(异常来自异常来自 HRESULT:0x80029C4A (TYPE_E_CANTLOADLIBRARY )
这些天一直都在搞播放器,也一直都没搞明白,希望大牛帮忙解答疑惑,不甚感激!谢谢!
这样是不是绑定呢?
谢谢你!麻烦你继续解答一下
void CMediaPlayer_douDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_OCX1, m_MediaPlayer);
}我在上面的函数里面加上了第二句之后,就没有提示那个错误了,但是运行程序时,打开一个wma文件后,弹出一个对话框说:找不到文件我现在确定,传递的路径是没错的,
选择路径对话框里的一段:
if(dlg.DoModal()==IDOK)
{
CString PathName=dlg.GetPathName();
PathName.MakeUpper();
m_MediaPlayer.Open(PathName);
}ps:这个应该不是我的第一个问题了,所以我把帖子结了,现在的问题我会自己去探索一下,但我还是希望大牛能帮我解答一下,谢谢!