用vc6.0写出来的

用到了MCI接口

成品

新建mc.h 为了整洁

#ifndef __MY_PLAYER_CONTROL_H__
#define __MY_PLAYER_CONTROL_H__#include <mmsystem.h>//插入多媒体头文件
class CMyPlayerControl
{
public:CMyPlayerControl();//构造函数~CMyPlayerControl();//析构函数public:BOOL Open(LPCSTR lpFileName);//打开文件void Play ();//播放void Close();//关闭void Stop ();//停止void Pause();//暂停DWORD GetLength (DWORD dwItem);//得到歌曲长度void SetwindowsHwnd (HWND hWnd);//设置主窗口句柄private:MCI_OPEN_PARMS mciOpen;//打开设备参数HWND m_hWnd;//主窗口句柄DWORD dwFrom;//播放起始点
};
#endif

新建mc.cpp 各种功能的实现

#include "stdafx.h"
#include "mc.h"//插入类的声明头文件CMyPlayerControl::CMyPlayerControl()//构造函数
{
}
CMyPlayerControl::~CMyPlayerControl() //析构函数
{Close();//调用关闭
}DWORD CMyPlayerControl::GetLength(DWORD dwItem)
{
//得到当前文件状态MCI_STATUS_PARMS mcistatusparms;mcistatusparms.dwCallback=(DWORD)m_hWnd;mcistatusparms.dwItem=dwItem;//状态类别值mcistatusparms.dwReturn=0;mciSendCommand (mciOpen.wDeviceID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD)&mcistatusparms);return mcistatusparms.dwReturn;//返回长度
}
BOOL CMyPlayerControl::Open(LPCSTR lpFileName)
{//如果有打开的MCI设备就关闭if(mciOpen.wDeviceID) Close();//初始化 MCT OPENPARMS结构中的文件类型mciOpen.lpstrDeviceType=NULL;//播放文件路径mciOpen.lpstrElementName=lpFileName;//向MCI设备发送命令消息(在打开设备时,设备号为0>if(mciSendCommand(0,MCI_OPEN,MCI_DEVTYPE_WAVEFORM_AUDIO,(DWORD)&mciOpen)){return FALSE;}dwFrom=MCI_MAKE_HMS (0,0,0);//起始位置为0return TRUE;
}
void CMyPlayerControl::Play ()
{//播放参数结构MCI_PLAY_PARMS mciplayparms;//得到文件大小DWORD cdlen = GetLength(MCI_STATUS_LENGTH);DWORD cdto=MCI_MAKE_HMS(MCI_HMS_HOUR(cdlen),MCI_HMS_MINUTE (cdlen) ,MCI_HMS_SECOND(cdlen));//把文件中读出的大小转换为时间数量mciplayparms.dwCallback=NULL;mciplayparms.dwFrom=dwFrom;//设置起始位置mciplayparms.dwTo=cdto;//设置终止位置if(mciOpen.wDeviceID!=0)//判断是否打开文件{//播放音乐mciSendCommand (mciOpen.wDeviceID,MCI_PLAY,MCI_TO|MCI_FROM,(DWORD) (LPVOID)& mciplayparms);}
}
void CMyPlayerControl::Close()
{if(mciOpen.wDeviceID){//执行McT CLOSE操作,关闭MCI设备mciSendCommand(mciOpen.wDeviceID,MCI_CLOSE,NULL,NULL);}
}
void CMyPlayerControl::Stop()
{if(mciOpen.wDeviceID){//执行MCI STOP操作,停止播放音乐mciSendCommand(mciOpen.wDeviceID,MCI_STOP,NULL,NULL);//把播放位置设定为音乐文件的开头(使下一次播放操作从文件开头位置开始)mciSendCommand(mciOpen.wDeviceID,MCI_SEEK,MCI_SEEK_TO_START,NULL);}dwFrom = MCI_MAKE_HMS(0,0,0);//把起始位置设置为0
}
void CMyPlayerControl::Pause()
{if(mciOpen.wDeviceID){//执行MCI_PAUSE操作,暂停播放音乐DWORD dwsf=GetLength(MCI_STATUS_POSITION);dwFrom=MCI_MAKE_MSF(MCI_MSF_MINUTE(dwsf),MCI_MSF_SECOND(dwsf),MCI_MSF_FRAME(dwsf));
//执行MCT PAUSE操作,暂停播放音乐mciSendCommand(mciOpen.wDeviceID,MCI_PAUSE,NULL,NULL);}
}
void CMyPlayerControl::SetwindowsHwnd (HWND hWnd)
{m_hWnd = hWnd;//把当前父窗口的句柄传入
}

然后自己写调用

注意:

进度条要建立连接(卡了我好久);

要看懂代码运行逻辑;

文件在github上

GitHub - 123duoyun/MP3: c++ mfc mp3

c++ mfc mp3相关推荐

  1. MFC滑块对单击消息的响应(MP3剪切器V1.1)

    上一篇文章推荐了一个MP3剪切器,其中有关播放进度的调整存在问题,滑块本身拖动可以完成进度调整,但当通过鼠标单击目标位置时,滑块总是不能直接跳到想要达到的位置,使用体验较差.本文主要讨论一下如何调整滑 ...

  2. MFC播放MP3格式音乐

    前话是:想在MFC中添加音乐背景,然后就去查用什么函数可以播放音乐,查到俩个函数sndPlaySound和PlaySound,用函数当然是简单,但是这俩个函数只能播放wav格式的音乐,这就出现两个问题 ...

  3. MFC之MP3音频文件转二进制、十六进制等

    MP3转16进制: 在VS2013和VC6.0中编译都没有问题 PS:因为音频文件的长短不一,所需要的空间很大,1024都太小了,所以要读取全部数据将缓冲区域设置的经量大一点. CFile rfile ...

  4. VC++、MFC最好的开源项目

    介绍:介绍一下用VC++/MFC写的最好的开源项目. Sourceforge.net中有许多高质量的VC++开源项目,我列举了一些可以作为VC++程序员的参考. 正文: VC++.MFC中最好的开源项 ...

  5. MFC 蜂鸣声或播放音频

    应项目需要,在网上搜集 MFC 中发声或播放音频函数如下: 一. 蜂鸣声 BOOL WINAPI Beep( DWORD dwFreq, //频率 DWORD dwDuration //持续时间 ); ...

  6. 微机原理实验8254计算机钢琴,GitHub - SincereXIA/PianoMFC: 西电微机原理课设项目,键盘电子乐器演奏程序设计(电子琴),MFC...

    PianoMFC 西电微机原理课设项目,键盘电子乐器演奏程序设计(电子琴),MFC 需要连接西电微机原理实验室提供的 QTH9054 微机试验箱,使用其蜂鸣器发声,若不连接,程序会直接播放 mp3 文 ...

  7. MFC制作简易音乐播放器

    // MFC音乐播放器Dlg.cpp : implementation file // #include "stdafx.h" #include "MFC音乐播放器.h& ...

  8. MFC中常见控件的操作

    1.下面的代码用于获取屏幕的长度和宽度  int iWidth = GetSystemMetrics(SM_CXSCREEN); // int iHeight = GetSystemMetrics(S ...

  9. 《MFC游戏开发》笔记十 游戏中的碰撞检测进阶:地图类型障碍物判定

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9394465 作者:七十一雾央 新浪微博:http:// ...

最新文章

  1. ActiveMQ与xml rpc
  2. 2020-2021年度第二届全国大学生算法设计与编程挑战赛(春季赛)【部分题题解】
  3. 光盘在电脑上为什么放不出来_铁砂掌这么厉害,为什么上擂台用不出来
  4. 《网易编程题》计算糖果
  5. crntos7启动php命令_CentOS7设置php-fpm开机自启动
  6. LeetCode:999. 车的可用捕获量
  7. Python中的常用模块
  8. 在Excel中插入Flash及解决不能自动播放问题
  9. ZED2+ORB_SLAM3+视觉惯性轨迹保存
  10. atitit.流程标准化--- mysql启动不起来的排查流程attilax总结
  11. Flexsim——初学AGV必看的知识点(如何解决AGV锁死的情况)
  12. mysql脚本 ip数据库_纯真IP数据库镜像及sql脚本同步更新
  13. 学UI设计要学哪些软件
  14. matlab图像身高测量,基于Kinect景深图像的快速身高和体重测量方法
  15. 快递柜项目,面向对象
  16. 一则两年前的可怕预言:2013年中国经济危机将爆发!
  17. 前端HTML(3)【带动图,便于理解】
  18. 中文短文本分类实例十四-LEAM(Joint Embedding of Words and Labels for Text Classification)
  19. 手游公司运维之初识MongoDB
  20. 计算机函数if80到90分怎么弄,用EXCEL工作表怎样利用IF函数计算分数等级

热门文章

  1. 使用 Rest-Assured 测试 REST API
  2. 「SQL面试题库」 No_40 二级关注者
  3. java ftp 权限_FTP用户权限
  4. 【物联网】探索NE555:一款经典的集成电路(超详细)
  5. SolidWorks二次开发 遍历树节点
  6. 【vue】预加载、懒加载
  7. 教你如何免费生成以及免费注册EOS账户
  8. css3八卦,CSS3 旋转的八卦图
  9. 《我们的战国》樱雪丸
  10. WINDOWS 系统如何查看 Python的安装版本号