BOOL CMp3PlayerDlg::OnInitDialog()//初始化函数
{
?????? m_DlgStyle.sTitleName = "音乐播放器";//设定标题
?????? COwnerDrawDialog::OnInitDialog();
?<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
?????? // 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;
?????? tnd.cbSize=sizeof(NOTIFYICONDATA);
?????? tnd.hWnd=this->m_hWnd;
?????? tnd.uID=IDI_MAINFRAME;
?????? tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
?????? tnd.uCallbackMessage=WM_DLG_SHOW;
?????? tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_MAINFRAME));
?????? strcpy(tnd.szTip,"音乐播放器");
?????? 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_MPBar.SetScrollPos(m_nPos);//改变进度条位置
?????? ?????? m_Music.Seek(m_nPos*1000);//改变音乐播放进度
?????? ?????? if(m_bPause)
????????????? {
????????????? ?????? m_bPause = false;
????????????? ?????? m_Pause.SetWindowText("暂停");
????????????? }
?????? ?????? m_Music.Play(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;
????????????? ?????? menu.LoadMenu(IDR_MENU);
????????????? ?????? CMenu *popMenu = menu.GetSubMenu(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_CFile.Open())//如果有自动播放设置,则进行自动播放
????????????? {
????????????? ?????? return;
????????????? }
????????????? //
?????? ?????? m_CFile.ReadSetInfo(m_SetInfo);
?????? ?????? SYSTEMTIME sysTime;
?????? ?????? GetLocalTime(&sysTime);
?????? ?????? m_CFile.ReadDayInfo(sysTime.wDayOfWeek,m_Info);
?????? ?????? m_CFile.Close();
????????????? int hour = GetHour(m_Info.sSStarttime);
????????????? int minute = GetMinute(m_Info.sSStarttime);
?????? ?????? if(sysTime.wHour == hour && sysTime.wMinute == minute)//开始播放上午音乐
????????????? {
????????????? ?????? ReadCatalogMusic(m_Info.sSMusic);//读取配置文件中指定的上午播放音乐目录
????????????? ?????? m_nPlay = 0;
????????????? ?????? Play(0);
????????????? ?????? KillTimer(1); //终止1号定时器
????????????? ?????? int duration = atoi(m_Info.sSDuration);//读取播放时间段
????????????? ?????? SetTimer(3,duration*60*1000,NULL);//启动三号定时器
????????????? ?????? m_nFlag = 1;
????????????? ?????? return;
????????????? }
????????????? hour = GetHour(m_Info.sMStarttime);
?????? ?????? minute = GetMinute(m_Info.sMStarttime);
?????? ?????? if(sysTime.wHour == hour && sysTime.wMinute == minute)//开始播放中午音乐
????????????? {
????????????? ?????? ReadCatalogMusic(m_Info.sMMusic);
????????????? ?????? m_nPlay = 0;
????????????? ?????? Play(0);
????????????? ?????? KillTimer(1);
????????????? ?????? int duration = atoi(m_Info.sMDuration);
????????????? ?????? SetTimer(3,duration*60*1000,NULL);
????????????? ?????? m_nFlag = 2;
????????????? ?????? return;
????????????? }
????????????? hour = GetHour(m_Info.sEStarttime);
?????? ?????? minute = GetMinute(m_Info.sEStarttime);
?????? ?????? if(sysTime.wHour == hour && sysTime.wMinute == minute)//开始播放下午音乐
????????????? {
????????????? ?????? ReadCatalogMusic(m_Info.sEMusic);
????????????? ?????? m_nPlay = 0;
????????????? ?????? Play(0);
????????????? ?????? KillTimer(1);
????????????? ?????? int duration = atoi(m_Info.sEDuration);
????????????? ?????? SetTimer(3,duration*60*1000,NULL);
????????????? ?????? m_nFlag = 3;
????????????? ?????? return;
????????????? }
//???? ?????? SetTimer(1,1000,NULL);
?????? ?????? m_CFile.Close();
?????? }
?????? if(nIDEvent == 3)//三号定时器,是播放时间段定时器,播放时间到了,就自动停止播放,启动1号定时器,等待下次播放的开始,同时关闭2号和3号定时器,终止播放。
?????? {
?????? ?????? if(m_Music.IsOpen())
????????????? {
????????????? ?????? m_Music.Close();
????????????? ?????? SetTimer(1,1000,NULL);
????????????? ?????? KillTimer(2);
????????????? ?????? KillTimer(3);
????????????? }
?????? ?????? return;
?????? }
?????? if(nIDEvent == 4)//4号定时器是为了马上隐藏窗口。也可以用MoveWindow之类的处理
?????? {
?????? ?????? ShowWindow(SW_HIDE);
?????? ?????? KillTimer(4);
?????? ?????? return;
?????? }
?????? if(nIDEvent == 2 && m_Music.IsOpen() && !m_bPause)//2号定时器是为了定时修改对话框中的各个控件状态,比如播放进度条,当前播放时间等
?????? {
?????? ?????? m_nPos += 1;
?????? ?????? m_sMusicPos.Format("%d分%d秒",m_nPos/60,m_nPos%60);
?????? ?????? UpdateData(false);
?????? ?????? m_MPBar.SetScrollPos(m_nPos);
?????? ?????? if(m_nPos >= m_nTime)
????????????? {
????????????? ?????? if(m_nPlay == m_MusicAry.GetSize()-1)
????????????? ?????? {
???????????????????? ?????? if((m_bAutoRun && m_SetInfo.bCyc) || !m_bAutoRun)
???????????????????? ?????? {
???????????????????? ?????? ?????? m_nPlay = 0;
???????????????????? ?????? ?????? Play(0);
???????????????????? ?????? ?????? m_MPBar.SetScrollPos(0);
???????????????????? ?????? }
???????????????????? ?????? else
???????????????????? ?????? {
???????????????????? ????????????? //进入睡眠
???????????????????? ?????? ?????? m_Music.Close();
???????????????????? ?????? ?????? SetTimer(1,1000,NULL);
???????????????????? ?????? ?????? KillTimer(2);
???????????????????? ?????? ?????? KillTimer(3);
???????????????????? ?????? ?????? return;
???????????????????? ?????? }
????????????? ?????? }
????????????? ?????? else
????????????? ?????? {
???????????????????? ?????? Play(++m_nPlay);
???????????????????? ?????? m_MPBar.SetScrollPos(0);
????????????? ?????? }
????????????? }
?????? }
?????? COwnerDrawDialog::OnTimer(nIDEvent);
}
【备注】:由于本软件用到许多辅助模块,在此不一一详解。如果有兴趣的朋友,可以留下EMAIL,笔者可以将程序免费送出。
播放器图例
分享到:
相关推荐
【应用】自动循环播放的MP3播放器主要用于企业文化的应用。在每天的休息时段,播放器自动循环播放指定的MP3音乐。本自动播放器主要根据本公司的情况编写,包括早上上班,中午吃饭和下午下班三个时间段各播放1小时...
Androidstudio 播放工程res/raw下的视频 ,运行后自动循环播放,导入项目即可运行,自己试过没有问题做个记录。
解决循环播放视频黑屏自动停止;用于公司年会、各种会议、讲做、的大屏幕投影仪循环播放一小段视频背景视频。解决短暂黑屏、播放自动停止解决办法!(没有积分的自己注册账号,填写资料后即可下载)
flash 3D旋转木马图片自动循环播放代码 flash 3D旋转木马图片自动循环播放代码
使用 Vlc.DotNet.Forms,实现自动循环播放多个视频文件
基于MFC开发的MP3播放器,支持列表播放,可以循环播放
该MP3能够实现播放、暂停、下一首、上一首、添加、删除、循环、单曲等功能,还可以修改播放器主界面
读取数据库,list加载歌曲文件路径... 可以设置循环播放mp3...
简易MP3音乐播放器(源代码),主要适用于零基础同学,方便其对MFC编程方面的了解也加深,更能促进大家的编程爱好
3、本播放器优势:音乐播放结束后自动切换到下一首(我查的别的代码这个功能基本没有)、循环播放。 4、细节(待补充):会自动刷新时间。视觉上不会有bug。 5、测试音乐:用李荣浩的贝贝,比较好测试各项功能...
使用picturebox和timer做的图片自动循环播放程序,带暂停
一个用qt实现的图片自动循环播放的小程序。 对刚刚学qt的新生有用!
flash xml制作简洁的mp3音乐播放器支持循环播放音乐 flash xml制作简洁的mp3音乐播放器支持循环播放音乐
VC下实现循环播放MP3,wma等音乐 大家来看
该例子是viewpager的经典案例的使用,代码简单通俗易懂,适合所有的项目的首页运用和引导页的使用,对初学者学习也是有很大的帮助的
具有默认、全部循环、单曲循环、随机播放等4中播放模式。 具有显示播放器当前状态功能,能实时显示播放器当前的播放状态和播放列表的一些基本信息。 具有同步功能,在用户退出时, 能保存当前的状态,在...
javascript循环播放歌曲
这是我自己写的一个MP3播放器,由于是初学VB,不过这个播放器很好用,可以双击列表文件名就可以播放,列表文件名可以加很多,可循环播放.希望大家喜欢.
老二牛车教育程矢 Axure夜话之Axure基础系列视频教程之图片自动循环播放