www.pudn.com > SimplePlayer.rar > SimplyPlayerDlg.h
// SimplyPlayerDlg.h : 头文件
//
#include "mysliderctrl.h"
#include "resource.h"
#pragma once
#include "afxwin.h"
#include "afxcmn.h"
/////////////////////////
#include "afxext.h"
#include "XPButton.h"
////////////////////////
//定义用来存储歌曲路径的链表
struct FilePath
{
int nItem;
CString m_Path;
FilePath *next;
};
// CSimplyPlayerDlg 对话框
class CSimplyPlayerDlg : public CDialog
{
// 构造
public:
CSimplyPlayerDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~CSimplyPlayerDlg();
// 对话框数据
enum { IDD = IDD_SIMPLYPLAYER_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
HICON m_hIcon;
// 生成的消息映射函数
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) ;
DECLARE_MESSAGE_MAP()
//自定义的消息处理
protected:
//处理按钮的响应消息
afx_msg void OnOpen();
afx_msg void OnPause();
afx_msg void OnStop();
afx_msg void OnDlgExit();
afx_msg void OnRandom();
afx_msg void OnFrontMusic();
afx_msg void OnNextMusic();
//用来检测是否唱完
afx_msg void OnTimer(UINT nIDEvent);
//处理滑块移动的消息
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
//滑块消息下具体的事件
afx_msg void OnNext();
afx_msg void OnPrior();
afx_msg void OnThumbTrack();
//在托盘中点击程序图标
afx_msg LRESULT OnShowTask(WPARAM, LPARAM);
//对右键弹出菜单的响应
afx_msg void OnPopmenuAbout();
afx_msg void OnPopmenuExit();
//重载对关闭按钮的消息响应
afx_msg void OnClose();
// 初始化添加音乐List Control
afx_msg void OnAddMusic();
//双击列表框中某一项时的消息响应
afx_msg void OnDbClkMusicList(NMHDR* pNMHDR, LRESULT* pResult);
//对“清空所有”按钮的消息响应
afx_msg void OnDeletelist();
private:
//画刷
CBrush m_brush;
//保存歌曲路径的链表
FilePath *head, *temp, *pEnd;
//暂停开关
BOOL bPause;
BOOL bRand;
//一些控件变量
CString filename;
CString status;
CXPButton m_Pause;
CXPButton m_Stop;
CXPButton m_Open;
CXPButton m_Random;
CXPButton m_Front;
CXPButton m_Next;
CXPButton m_AddBtn;
CXPButton m_ClearBtn;
CStatic m_Status;
CStatic m_FileName;
CStatic m_VolumeControl;
//原先滑块的位置
int OldPos;
//双击列表框中的对应项的索引
int index ;
//歌曲顺序ID号
int num ;
//找到链表中第index个结点
FilePath* CSimplyPlayerDlg::FindItem(FilePath *head, int index);
//初始化列表控件
void InitMusicList();
//处理播放歌曲
void OnPlay(CString m_Path, CString strIndex);
void CSimplyPlayerDlg::OnOrderPlay();
void CSimplyPlayerDlg::OnRandomPlay();
//把添加的多个文件转换成歌曲名后输出到列表控件中
void CSimplyPlayerDlg::OutputItem( CString m_Path);
//把完整路径名转换为歌曲名
CString CSimplyPlayerDlg::PathNameConvertFileName(CString m_Path);
//从mp3文件中读取歌手名和歌曲名
CString GetMusicArtist(CString m_Path);
CString GetSongTitle(CString m_Path);
//获取歌曲信息
CString CSimplyPlayerDlg::GetMusicInfo(CString m_Path, CString strIndex);
//以假设的128kbps帧频率速度来计算mp3的时间
CString GetAboutMusicTime( CString m_Path );
//获得MP3歌曲的精确时间,但必须是当前正在播放的歌曲,也就是MCI正在打开的歌曲
CString GetTruthMusicTime( CString m_Path );
public:
//音频句柄
HWND m_Audio;
CMySliderCtrl m_Volume;
CListCtrl m_AddList;
//托盘结构体
NOTIFYICONDATA nid;
//点击最小化按钮到,把程序放到到托盘中
void ToTray(BOOL Show);
};