注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小人物的自述

为梦想而奋斗,没有梦想就没有希望!

 
 
 

日志

 
 

VC播放mp3的方法  

2009-06-03 10:36:44|  分类: 学习笔记 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

首先感谢下面两个网址,在他们的帮助下自己完成了这个方法。
http://www.cppblog.com/lovedday/archive/2008/01/02/29352.htmlhttp://www.sciencenet.cn/m/user_content.aspx?id=42963

void DlgMusic::OnMusic()
{
 // TODO: Add your control notification handler code here
 IGraphBuilder* pGBuilder;
 IMediaControl* pMControl;
 IMediaPosition* pMPos;
 IMediaEvent* pMEvent;

 CoInitialize(0);
 //CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC,IID_IGraphBuilder,(void**)&pGBuilder);
 if(FAILED(CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder,(void**)&pGBuilder)))
    {
        MessageBox("Unable to create DirectShow Graph Builder object.", "Error", MB_OK);
        return;
    }
 
 pGBuilder->QueryInterface(IID_IMediaControl,   (void**)&pMControl);
 pGBuilder->QueryInterface(IID_IMediaPosition,   (void**)&pMPos);
 pGBuilder->QueryInterface(IID_IMediaEvent, (void**)&pMEvent);

 CHAR   strSoundPath[MAX_PATH];
 WCHAR   wstrSoundPath[MAX_PATH];
 GetCurrentDirectory(MAX_PATH,   strSoundPath);
 strcat(strSoundPath,   "\\listening\\");
 strcat(strSoundPath,   "a.mp3");
 MultiByteToWideChar(CP_ACP,0,strSoundPath,-1,wstrSoundPath,MAX_PATH);

 pGBuilder->RenderFile(wstrSoundPath,NULL);
 pMPos->put_CurrentPosition(0);
 pMControl->Run();

 MSG msg;
 ZeroMemory(&msg, sizeof(MSG));

 while(msg.message != WM_QUIT)
 {
  if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
  }

  long event_code, param1, param2;
  // retrieves the next notification event
  if(SUCCEEDED(pMEvent->GetEvent(&event_code, &param1, &param2, 1)))
  {
   if(event_code == EC_COMPLETE)
   {
    // frees resources associated with the parameters of an events.
    pMEvent->FreeEventParams(event_code, param1, param2);
   }
  }
 }
 //pMControl->Stop();
 //SAFE_RELEASE(pMControl);
 //SAFE_RELEASE(pMPos);
 //SAFE_RELEASE(pGBuilder);
 pMControl->Stop();
 pMEvent->Release();
    pMEvent = NULL;
    pMControl->Release();
    pMControl = NULL;
 pMPos->Release();
    pMPos = NULL;
    pGBuilder->Release();
    pGBuilder = NULL;
 CoUninitialize();
}

拷贝后直接可用,主要是.h文件要配置好,需要安装DXSDK_Nov08.exe文件,也就是sdk接口吧,在工具-》配置里的目录上加上安装后的include目录,然后工程里配置一下库文件就可以了。

  评论这张
 
阅读(78)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017