GDI VC++重绘控件做的音乐播放器

用GDI重绘控件做的播放器。播放MP3格式的音乐。音乐部分用MCI接口。控件部分进行了自绘。



源码暂时在优化。还有小功能没完善。比如歌曲列表歌曲的存储。不用没关闭打开一次就要添加一次。比如歌词同步显示。还有播放模式还没做。就只有顺序播放模式。

等功能完善源码优化后。在年后放出代码。谢谢大家支持。放出程序。大家可以先看看小样。

开发语言VC++/MFC 开发环境VS2010 全程序没有使用一个dll文件。自绘部分依靠高仿qq界面部分源码。和自己重绘三个控件源码。

大概用到的响应函数

#pragma once
#include "DlgBase.h"
#include "Vocal.h"
// MusicPlayer 对话框

class CMusicPlayer : public CDlgBase
{
	//DECLARE_DYNAMIC(MusicPlayer)

public:
	CMusicPlayer(CWnd* pParent = NULL);   // 标准构造函数
	//virtual ~MusicPlayer();

// 对话框数据
	enum { IDD = IDD_WavPlayer };

protected:
	HICON m_hIcon;
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
	DECLARE_MESSAGE_MAP()
	afx_msg LRESULT OnVoiceThumbMove(WPARAM wParam, LPARAM lParam);  //声音滑块移动消息响应函数
	afx_msg LRESULT OnPlay(WPARAM wParam, LPARAM lParam);            //播放消息函数
	afx_msg LRESULT AddVocal(WPARAM wParam, LPARAM lParam);          //添加歌曲消息函数
	afx_msg LRESULT OnDown(WPARAM wParam, LPARAM lParam);            //歌曲列表换页下消息函数
	afx_msg LRESULT OnUp(WPARAM wParam, LPARAM lParam);              //歌曲列表换页上消息函数
	afx_msg LRESULT OnDelete(WPARAM wParam, LPARAM lParam);          //歌曲列表删除歌曲消息函数
	afx_msg LRESULT OnNext(WPARAM wParam, LPARAM lParam);            //歌曲下一首消息函数
	afx_msg LRESULT OnPre(WPARAM wParam, LPARAM lParam);             //歌曲上一首消息函数
public:
	afx_msg void OnTimer(UINT_PTR nIDEvent);
	virtual BOOL OnInitDialog();
	virtual void InitUI(CRect rcClient);
	virtual void OnSize(CRect rcClient);
	afx_msg void OnMouseMove(UINT nFlags, CPoint point); //鼠标事件
	virtual BOOL PreTranslateMessage(MSG* pMsg);         //键盘事件
	unsigned long GetVocalTime(CString s);               //获取歌曲总长度
	void PlayVocal();                                    //播放歌曲函数
	void ResumeVocal();                                  //暂停歌曲函数
	void StopVocal();                                    //停止歌曲函数
	void WaitVocal();                                    //挂起歌曲函数
	DWORD getinfo(DWORD item);                           //获取歌曲状态函数
	void SetVocalVol(DWORD vol);                         //调节歌曲音量函数
public:
	//---------------slider控件相关--------------
	CPoint oldP,oldP2;
	bool isDown;
	CRect vbr,r1,r2,vbr2,pr1,pr2; 
	int min,max,pmin,pmax;
	//------------------------------------------

	bool isPlay;
	CArray<Vocal,Vocal>m_VocalArray; //歌曲容器
	int ListCount;   //歌曲数量
	int realPage;
	int col;
	int vpage;

	//-------------MCI播放相关-----------------
	DWORD cdto,cdfrom,cdlen,m_count;
	bool isResume;
	CString playPath;
	int PlayID;
	int vocalID;
	int minute,second,hour;
	int tlen;//时间长度
	//--------------------------------------
	
	
};

自定义部分控件

//控件
#define           ST_TIMEM              2016
#define           ST_TIMES              2017
#define           ST_NAME               2018
#define           ST_PlAYLIST           2001 //播放列表  STATICTEST 静态文本控件
#define           BT_PLAY               2002 //播放按钮  BUTTON 控件
#define           BT_PRE                2003
#define           BT_STOP               2004
#define           BT_DELETE             2005
#define           BT_NEXT               2006
#define           BT_VOICE              2007
#define           BT_ADD                2008
#define           BT_LINE1              2009
#define           BT_THUMB1             2010
#define           BT_THUMB2             2011
#define           BT_UP                 2012
#define           BT_DOWN               2013
#define           BT_ONLINE             2014
#define           BT_SELECT             2015


下载地址:点击打开链接


  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值