制作自动循环播放器

制作自动循环播放器

2023年7月11日发(作者:)

【实现内容】自动循环播放的MP3播放器

【应用】自动循环播放的MP3播放器主要用于企业文化的应用。在每天的休息时段,播放器自动循环播放指定的MP3音乐。本自动播放器主要根据本公司的情况编写,包括早上上班,中午吃饭和下午下班三个时间段各播放1小时左右的音乐。播放器启动后,只在托盘中有图标,配置好各个时间段的音乐目录后,不需要人工干预,音乐可以自动启动、循环播放和结束。现已在本公司使用。

【特点】本软件用到许多常用的技巧:

1. 目录选择对话框

2. 文件选择对话框中的多个文件类型过滤设定

3. 应用程序在任务栏上隐藏,而在托盘上显示图标

4. 进度条的制作

5. 定时器使用

6. 带有链接功能的按钮――点击按钮可以打开电子信箱

7. 椭圆型的彩色按钮,彩色文本

8. 彩色标题条,彩色标题文字。等等

【实现原理】主要使用定时器。程序一旦运行,定时器将每秒响应一次。直到手工退出程序。

【主要控件】

m_MusicList---ComboBox类型 音乐文件列表

【主要程序段及说明】

void CMp3PlayerDlg::OnOpen() //点击打开按钮,选择音乐文件。可以多选

{

m_ontent();

m_All();

m_(); //m_Music是CCOMMCI对象

Init();

m_dowText("暂停");

//

CString filter = "媒体文件(所有类型)|*.cda;*.mid;*.rmi;*.midi;*.asf;*.wm;*.wma;*.asx;*.wax;*.m3u;*.wvx;

*.mpeg;*.mpg;*.m1v;*.mp3;*.avi;*.wmv;*.wav;*.snd;*.au;*.aif;*.aifc|";

filter = filter +"CD音乐曲目(*.cda)|*.cda|" +

"MIDI文件(*.mid;*.rmi;*.midi)|*.mid;*.rmi;*.midi|" +

"Windows Media文件(*.asf;*.wm;*.wma;*.wa?)|*.asf;*.wm;*.wma;|" +

"媒体播放表(*.asx;*.wax;*.m3u;*.wvx)|*.asx;*.wax;*.m3u;*.wvx|" +

"电影文件(*.mpeg;*.mpg;*.m1v;*.mp3)|*.mpeg;*.mpg;*.m1v;*.mp3|" +

"视频文件(*.avi;*.wmv)|*.avi;*.wmv)|" +

"音频文件(*.wav;*.snd;*.au;*.aif;*.aifc)|*.wav;*.snd;*.au;*.aif;*.aifc|" +

"所有文件(*.*)|*.*|";

CFileDialog

music(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT,filter);

if(l() == IDOK)

{

POSITION pos = rtPosition();

while (pos != NULL)

{

CString str = tPathName(pos);

m_(str);

int index = eFind('');

if(index == -1)

m_ing(str);

else

{

CString name = (index + 1);

m_ing(name);

}

}

}

}

void CMp3PlayerDlg::Play(int index)//播放函数,index为曲目的序号

{

m_();

m_Sel(index);

CString sPath = m_(index);

m_(sPath);

m_dowText(sPath + _T(" 正在播放..."));//在状态条中显示提示信息

m_nLength = m_gth();//获取音乐长度

m_nPos = 0;

m_nTime = m_nLength/1000;//除以1000即为播放时间

//

m_("%d分%d秒",m_nTime/60,m_nTime%60);//显示播放时间

m_("%d分%d秒",m_nPos/60,m_nPos%60);//显示当前播放位置

//

UpdateData(false);

m_ollRange(0,m_nTime);//设置音乐播放的进度条范围

//

m_ge(0,1000);//设置音量调节范围

m_(m_nVolume);

//

m_(this->m_hWnd);//开始播放

SetTimer(2,1000,NULL);//启动2号定时器

}

BOOL CMp3PlayerDlg::OnInitDialog()//初始化函数

{

m_Name = "音乐播放器";//设定标题

COwnerDrawDialog::OnInitDialog();

// Set the icon for this dialog. The framework does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

SetTimer(4,100,NULL);//启动4号定时器

///////////////

if(m_bAutoRun)

SetTimer(1,1000,NULL);//如果是自动播放,则启动1号定时器

//以下为应用程序隐藏任务栏,放到托盘中去的程序

long wl = GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE);

SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,WS_EX_TOOLWINDOW);

//

NOTIFYICONDATA tnd;

=sizeof(NOTIFYICONDATA);

=this->m_hWnd;

=IDI_MAINFRAME;

=NIF_MESSAGE|NIF_ICON|NIF_TIP;

ackMessage=WM_DLG_SHOW;

=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_MAINFRAME));

strcpy(,"音乐播放器");

Shell_NotifyIcon(NIM_ADD,&tnd);

return TRUE; // return TRUE unless you set the focus to a control

}

=================

void CMp3PlayerDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) //拖动音乐播放进度条

{

if(pScrollBar == &m_MPBar)

{

switch(nSBCode)

{

case SB_THUMBTRACK:

m_nPos = nPos;

break;

}

m_ollPos(m_nPos);//改变进度条位置

m_(m_nPos*1000);//改变音乐播放进度

if(m_bPause)

{

m_bPause = false;

m_dowText("暂停");

}

m_(this->m_hWnd);

}

COwnerDrawDialog::OnHScroll(nSBCode, nPos, pScrollBar);

}

=================

LRESULT CMp3PlayerDlg::OnDlgShow(WPARAM wParam,LPARAM lParam)//系统托盘下鼠标点击图标响应函数

{

UINT uID;//发出该消息的图标的ID

UINT uMouseMsg;//鼠标动作

POINT pt;

uID=(UINT) wParam;

uMouseMsg=(UINT) lParam;

GetCursorPos(&pt);

if(uID == IDI_MAINFRAME)

{

if(uMouseMsg==WM_LBUTTONDOWN)//如果是单击左键,则弹出窗口

{

if(!IsIconic())

{

ShowWindow(SW_NORMAL);

return true;

}

ShowWindow(SW_NORMAL);

}

else if(uMouseMsg == WM_RBUTTONDOWN)//点击右键则弹出右键菜单

{

CMenu menu;

nu(IDR_MENU);

CMenu *popMenu = Menu(0);

popMenu->TrackPopupMenu(TPM_LEFTBUTTON,pt.x,pt.y,this);

}

}

return true;

}

===============

void CMp3PlayerDlg::OnTimer(UINT nIDEvent) //定时器处理

{

if(nIDEvent == 1)//1号定时器,主要处理自动播放功能

{

//

Init();

if(!m_bAutoRun)

{

return;

}

if(!m_())//如果有自动播放设置,则进行自动播放

{

return;

}

//

m_tInfo(m_SetInfo);

SYSTEMTIME sysTime;

GetLocalTime(&sysTime);

m_yInfo(Week,m_Info);

m_();

int hour = GetHour(m_ttime);

int minute = GetMinute(m_ttime);

if( == hour && e == minute)//开始播放上午 音乐

{

ReadCatalogMusic(m_c);//读取配置文件中指定的上午播放音乐目录

m_nPlay = 0;

Play(0);

KillTimer(1); //终止1号定时器

int duration = atoi(m_tion);//读取播放时间段

SetTimer(3,duration*60*1000,NULL);//启动三号定时器

m_nFlag = 1;

return;

}

hour = GetHour(m_ttime);

minute = GetMinute(m_ttime);

if( == hour && e == minute)//开始播放中午音乐

{

ReadCatalogMusic(m_c);

m_nPlay = 0;

Play(0);

KillTimer(1);

int duration = atoi(m_tion);

SetTimer(3,duration*60*1000,NULL);

m_nFlag = 2;

return;

}

hour = GetHour(m_ttime);

minute = GetMinute(m_ttime);

if( == hour && e == minute)//开始播放下午音乐

{

ReadCatalogMusic(m_c);

m_nPlay = 0;

Play(0);

KillTimer(1);

int duration = atoi(m_tion);

SetTimer(3,duration*60*1000,NULL);

m_nFlag = 3;

return;

}

// SetTimer(1,1000,NULL);

m_();

}

if(nIDEvent == 3)//三号定时器,是播放时间段定时器,播放时间到了,就自动停止播放,启动1号定时器,等待下次播放的开始,同时关闭2号和3号定时器,终止播放。

{

if(m_())

{

m_();

SetTimer(1,1000,NULL);

KillTimer(2);

KillTimer(3);

}

return;

}

if(nIDEvent == 4)//4号定时器是为了马上隐藏窗口。也可以用MoveWindow之类的处理

{

ShowWindow(SW_HIDE);

KillTimer(4);

return;

}

if(nIDEvent == 2 && m_() && !m_bPause)//2号定时器是为了定时修改对话框中的各个控件状态,比如播放进度条,当前播放时间等

{

m_nPos += 1;

m_("%d分%d秒",m_nPos/60,m_nPos%60);

UpdateData(false);

m_ollPos(m_nPos);

if(m_nPos >= m_nTime)

{

if(m_nPlay == m_e()-1)

{

if((m_bAutoRun && m_) || !m_bAutoRun)

{

m_nPlay = 0;

Play(0);

m_ollPos(0);

}

else

{

//进入睡眠

m_();

SetTimer(1,1000,NULL);

KillTimer(2);

KillTimer(3);

return;

}

}

else

{

Play(++m_nPlay);

m_ollPos(0);

}

}

}

COwnerDrawDialog::OnTimer(nIDEvent);

}

发布者:admin,转转请注明出处:http://www.yc00.com/news/1689068151a202548.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信