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); 
	 
};