MFC播放音频(MP3或WMA)的方法

Hsuxu 2009-12-16 11:54:46
我想在MFC中播放音频(MP3或wma),不用控件,就点击按钮后 直接自动播放的那种。有什么办法,能给出代码示例吗?
...全文
1480 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hsuxu 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 blackboyofsnp 的回复:]
引用 10 楼 hsuxu 的回复:
感觉用wave的话 一首wave格式的歌太大啊 怎么办


有不同的编码方式啊。。。。嫌大就用midi
[/Quote]我想问你 如果我就想放个 比如"H:\七里香.mid"的音频 什么界面都不用,只要有播放功能,能否给我个简单代码,急求!!!拜谢!!!!!!
tianzhaohui1 2009-12-22
  • 打赏
  • 举报
回复
楼主把

miaolingshaohua 兄的 代码贴上来,大家都学习学习啊~
tianzhaohui1 2009-12-22
  • 打赏
  • 举报
回复
如果只是想实现的话,有个超简单的方法!


HINSTANCE ShellExecute( HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);

Hsuxu 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 miaolingshaohua 的回复:]
我闲来无事做了一个,要的话就Email to www.ywh987912@163.com
[/Quote]谢谢大侠了,我收到了!做得很不错,佩服佩服!
我想问你 如果我就想放个 比如"H:\七里香.mp3"的音频 什么界面都不用,只要有播放功能,能否给我个简单代码,急求!!!大侠帮个忙啊,你那个作品我一时半会看不懂(我刚接触这个的)。拜谢!!!!!!
lituqiang 2009-12-22
  • 打赏
  • 举报
回复
支持楼上,楼主,把代码贴出来,让我们都来学习学习!
qqzone6789 2009-12-20
  • 打赏
  • 举报
回复
ding...
Hsuxu 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 rockwhite 的回复:]
好啊  多哈大家撒;领导卡死了肯定
[/Quote]????
blackboycpp 2009-12-18
  • 打赏
  • 举报
回复
装啥Win7的SDK, 那得多大, 要装也装DirectX SDK。。。。
对一般小应用, 我觉得不需要DirectShow. 得研究个半天
danxuezx 2009-12-18
  • 打赏
  • 举报
回复
4L的就是MSDN中播放音频文件的例子
danxuezx 2009-12-18
  • 打赏
  • 举报
回复
这两天整在弄这个,你装个win7的sdk,里面有很多的例子,一看就清楚了。
现在都是用DS来播放的,不要用MCI系列函数。
blackboycpp 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 hsuxu 的回复:]
感觉用wave的话 一首wave格式的歌太大啊 怎么办
[/Quote]

有不同的编码方式啊。。。。嫌大就用midi
Hsuxu 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 blackboyofsnp 的回复:]
引用 5 楼 hsuxu 的回复:

大侠,能讲解一下吗?我不太懂,不好意思。谢谢!刚学C++ 好多东西不太会。就是我已经建好了一个MFC 然后我想在点击“确定”按钮 弹出新窗口时同时播放音乐,但看不见音乐播放的任何界面




它用的是DirectShow编程。 这个需要有DirectShow SDK的。
像你这种要求, 比较简单, 我觉得用DirectShow很容易解决。 当然, 用waveOutXXX之类的更好解决。 还是用wave或midi格式吧
[/Quote]感觉用wave的话 一首wave格式的歌太大啊 怎么办
blackboycpp 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hsuxu 的回复:]

大侠,能讲解一下吗?我不太懂,不好意思。谢谢!刚学C++ 好多东西不太会。就是我已经建好了一个MFC 然后我想在点击“确定”按钮 弹出新窗口时同时播放音乐,但看不见音乐播放的任何界面


[/Quote]

它用的是DirectShow编程。 这个需要有DirectShow SDK的。
像你这种要求, 比较简单, 我觉得用DirectShow很容易解决。 当然, 用waveOutXXX之类的更好解决。 还是用wave或midi格式吧
Hsuxu 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mmilmf 的回复:]
使用MCIWnd窗口类就行啦,lz搜一下就会有的
[/Quote]就是我已经建好了一个MFC 然后我想在点击“确定”按钮 弹出新窗口时同时播放音乐,但看不见音乐播放的任何界面....
Hsuxu 2009-12-17
  • 打赏
  • 举报
回复
就是我已经建好了一个MFC 然后我想在点击“确定”按钮 弹出新窗口时同时播放音乐,但看不见音乐播放的任何界面....各位大侠 帮忙啊!!
mmilmf 2009-12-17
  • 打赏
  • 举报
回复
使用MCIWnd窗口类就行啦,lz搜一下就会有的
rockwhite 2009-12-17
  • 打赏
  • 举报
回复
好啊 多哈大家撒;领导卡死了肯定
哈利路亚1874 2009-12-17
  • 打赏
  • 举报
回复
我闲来无事做了一个,要的话就Email to www.ywh987912@163.com
Hsuxu 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 rayyh1 的回复:]
int _tmain(int argc, _TCHAR* argv[])
{
    IGraphBuilder *pGraph = NULL;
    IMediaControl *pControl = NULL;
    IMediaEvent  *pEvent = NULL;

    // Initialize the COM library.
    HRESULT hr = CoInitialize(NULL);
    if (FAILED(hr))
    {
        printf("ERROR - Could not initialize COM library");
        return -1;
    }

    // Create the filter graph manager and query for interfaces.
    hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
                        IID_IGraphBuilder, (void **)&pGraph);
    if (FAILED(hr))
    {
        printf("ERROR - Could not create the Filter Graph Manager.");
        return -1;
    }

    hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
    hr = pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);

    // Build the graph. IMPORTANT: Change this string to a file on your system.
    hr = pGraph->RenderFile(L"D:\11.mp3", NULL);
    if (SUCCEEDED(hr))
    {
        // Run the graph.
        hr = pControl->Run();
    }
    pControl->Release();
    pEvent->Release();
    pGraph->Release();
    CoUninitialize();
  return 0;

}

[/Quote]大侠,能讲解一下吗?我不太懂,不好意思。谢谢!刚学C++ 好多东西不太会。就是我已经建好了一个MFC 然后我想在点击“确定”按钮 弹出新窗口时同时播放音乐,但看不见音乐播放的任何界面

rayyh1 2009-12-17
  • 打赏
  • 举报
回复
int _tmain(int argc, _TCHAR* argv[])
{
IGraphBuilder *pGraph = NULL;
IMediaControl *pControl = NULL;
IMediaEvent *pEvent = NULL;

// Initialize the COM library.
HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
{
printf("ERROR - Could not initialize COM library");
return -1;
}

// Create the filter graph manager and query for interfaces.
hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, (void **)&pGraph);
if (FAILED(hr))
{
printf("ERROR - Could not create the Filter Graph Manager.");
return -1;
}

hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
hr = pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);

// Build the graph. IMPORTANT: Change this string to a file on your system.
hr = pGraph->RenderFile(L"D:\11.mp3", NULL);
if (SUCCEEDED(hr))
{
// Run the graph.
hr = pControl->Run();
}
pControl->Release();
pEvent->Release();
pGraph->Release();
CoUninitialize();
return 0;

}

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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