MFC-添加背景音乐(2)-封装了mciSendCommand的简单MCI类

本文介绍了一个简单的MCI类封装,用于播放音频文件,并提供了一个更复杂的CMidi类实现MIDI音乐播放器的功能,包括播放、停止、上一首、下一首等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要在MFC应用程序中添加背景音乐并实现暂停,可以使用MCI(Media Control Interface)命令。以下是实现步骤: 1. 在资源视图中添加音乐文件,记下其ID号。 2. 在需要播放音乐的窗口添加以下代码: ``` #include <mmsystem.h> // 引入 MCI 命令需要的头文件 UINT m_nMusicID; // 记录音乐文件的ID号 BOOL m_bPlaying; // 记录音乐是否正在播放 // 播放音乐 void CMyWnd::PlayMusic() { if (m_bPlaying) return; // 如果音乐已经在播放,则不再播放 MCI_OPEN_PARMS mciOpen; mciOpen.lpstrDeviceType = _T("mpegvideo"); // 指定设备型为 MPEG 视频 mciOpen.lpstrElementName = MAKEINTRESOURCE(m_nMusicID); // 指定要播放的音乐文件 DWORD dwFlags = MCI_OPEN_TYPE | MCI_OPEN_ELEMENT; // 指定打开方式和打开元素 if (mciSendCommand(NULL, MCI_OPEN, dwFlags, (DWORD)&mciOpen) == 0) { MCI_PLAY_PARMS mciPlay; if (mciSendCommand(mciOpen.wDeviceID, MCI_PLAY, MCI_NOTIFY, (DWORD)&mciPlay) == 0) { m_bPlaying = TRUE; } else { mciSendCommand(mciOpen.wDeviceID, MCI_CLOSE, 0, NULL); } } } // 暂停音乐 void CMyWnd::PauseMusic() { if (!m_bPlaying) return; // 如果音乐已经暂停,则不再暂停 MCI_GENERIC_PARMS mciGen; if (mciSendCommand(mciOpen.wDeviceID, MCI_PAUSE, 0, (DWORD)&mciGen) == 0) { m_bPlaying = FALSE; } } // 停止音乐 void CMyWnd::StopMusic() { if (!m_bPlaying) return; // 如果音乐已经停止,则不再停止 MCI_GENERIC_PARMS mciGen; if (mciSendCommand(mciOpen.wDeviceID, MCI_STOP, 0, (DWORD)&mciGen) == 0) { m_bPlaying = FALSE; } mciSendCommand(mciOpen.wDeviceID, MCI_CLOSE, 0, NULL); // 关闭设备 } ``` 3. 在窗口的`OnCreate`函数中初始化音乐ID号和播放状态: ``` m_nMusicID = IDW_MUSIC; m_bPlaying = FALSE; ``` 4. 在窗口的消息处理函数中添加以下代码,实现点击“播放”按钮播放音乐,点击“暂停”按钮暂停音乐: ``` void CMyWnd::OnButtonPlay() { PlayMusic(); } void CMyWnd::OnButtonPause() { PauseMusic(); } ``` 注意,IDW_MUSIC是音乐文件在资源中的ID号,需要根据实际情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值