mciSendCommand在Win10上奔溃的问题解决/循环播放音乐
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:mciSendCommand在Win10上奔溃的问题解决/循环播放音乐
原文链接:https://www.stubbornhuang.com/749/
发布于:2020年03月07日 10:43:38
修改于:2020年03月11日 11:39:20
1 Win7下使用mciSendCommand播放音乐的代码
/* 2 MCI方式播放音乐 */
if (!m_Mp3FilePath.empty())
{
m_MciOpen.lpstrDeviceType = "mpegvideo"; //要操作的文件类型
m_MciOpen.lpstrElementName = m_Mp3FilePath.c_str(); //要操作的文件路径
MCIERROR mcierror = mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT, (DWORD)&m_MciOpen); //打开文件命令
if (mcierror)
{
}
else
{
m_MciPlay.dwCallback = (DWORD)NULL;
m_MciPlay.dwFrom = (DWORD)0; //播放起始位置ms为单位
mciSendCommand(m_MciOpen.wDeviceID, MCI_PLAY, MCI_NOTIFY | MCI_FROM, (DWORD)&m_MciPlay);
}
}
最先从网上抄的这段很酸爽的代码,在win7开发打包运行都没事,然后一把程序发布到Win10上运行一下子就崩溃。
2 Win10下使用mciSendCommand播放音乐的正确代码代码
认真查看了微软的文档的之后发现,
MCIERROR mcierror = mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT, (DWORD)&m_MciOpen);
中使用的是DWORD_PTR,而不是DWORD。
然后就把代码改成下面这样的:
/* 2 MCI方式播放音乐 */
if (!m_Mp3FilePath.empty())
{
m_MciOpen.lpstrDeviceType = "mpegvideo"; //要操作的文件类型
m_MciOpen.lpstrElementName = m_Mp3FilePath.c_str(); //要操作的文件路径
MCIERROR mcierror = mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT, (DWORD_PTR)&m_MciOpen); //打开文件命令
if (mcierror)
{
}
else
{
m_MciPlay.dwCallback = (DWORD)NULL;
m_MciPlay.dwFrom = (DWORD)0; //播放起始位置ms为单位
mciSendCommand(m_MciOpen.wDeviceID, MCI_PLAY, MCI_NOTIFY | MCI_FROM, (DWORD_PTR)&m_MciPlay);
}
}
果然可以了。
3 循环播放音乐
将:
mciSendCommand(m_MciOpen.wDeviceID, MCI_PLAY, MCI_NOTIFY | MCI_FROM, (DWORD_PTR)&m_MciPlay);
修改为
mciSendCommand(m_MciOpen.wDeviceID, MCI_PLAY, MCI_DGV_PLAY_REPEAT, (DWORD_PTR)&m_MciPlay); // 重复播放
当前分类随机文章推荐
- Windows - 虚拟按键Virtual-Key Codes大全 阅读3549次,点赞0次
- mciSendCommand在Win10上奔溃的问题解决/循环播放音乐 阅读2980次,点赞0次
- Windows - GDI/GDI+区别、用法总结 阅读108次,点赞0次
- Visual Studio - 将程序的日志输出到Visual Studio即时窗口 阅读5003次,点赞1次
- Windows 批处理文件bat执行完自动退出cmd黑窗口 阅读4938次,点赞0次
- Gdi+ - 将OpenCV Mat转换为Gdi+ Bitmap 阅读2075次,点赞0次
- Windows安装GCC/G++编译器教程 阅读1183次,点赞0次
- 用MFC写一个简易的恶作剧QQ好友的聊天轰炸机 阅读2430次,点赞1次
- PlaySound 播放内存中的音频数据 阅读3095次,点赞0次
- WPF - 代码动态更换按钮的背景图片 阅读3240次,点赞0次
全站随机文章推荐
- 深度学习 - 基础的Greedy Search和Beam Search算法的Python实现 阅读842次,点赞0次
- 资源分享 - Jim Blinn's Corner - A Trip Down the Graphics Pipeline 英文高清PDF下载 阅读2903次,点赞3次
- 资源分享 - Introduction to Computing with Geometry 英文高清PDF下载 阅读1272次,点赞1次
- WordPress - wp_registration_url函数详解 阅读972次,点赞0次
- 资源分享 - Physics Modeling for Game Programmers 英文高清PDF下载 阅读1672次,点赞0次
- Python - 爬取直播吧首页重要赛事赛程信息 阅读368次,点赞0次
- C++ - windows、linux跨平台递归创建多级目录 阅读183次,点赞0次
- 资源分享 – OpenGL SuperBible - Comprehensive Tutorial and Reference (Sixth Edition) OpenGL蓝宝书第6版英文高清PDF下载 阅读1924次,点赞0次
- Modern OpenGL - GLSL着色语言2:GLSL入口函数和GLSL中的变量 阅读2793次,点赞0次
- C++ - 在CTC解码算法后移除相邻重复和blank索引 阅读394次,点赞0次
评论
169