• msciSendCommand播放器到此结束了。


    功能:
    实现播放、暂停、停止、上一曲、下一曲、删除、删除所有、单曲循环、全部循环、
    (文件)文件路径显示、自定义音乐文件、播放进度、播放时间、音量设置(参考了网上的资料);
    利用文件读写:保存音乐文件、保存上次未播放完的音乐信息
    未完成的功能:歌词、进度条控制播放,没对界面进行处理
    播放器到此结束了有时间我会把未完成的功能也写上的
    大家可以下载下来参考参考,或者在此之上加一些功能

    头次连着几天写一个软件。如果稍加修改下界面和一些功能。。。还不错的。。

    呵呵。。

    遇到的问题

    1、CListCtrl问题刚开始我把它的属性设置成了排序的。。。如果显示出来的话只能显示出最后一个路径

    2、CFileDialog问题读取多个文件后不能直接利用API来获得文件名

    自己封装了一个函数来获得

    //得到某个字字符最后出现的位置
    int FindLast(CString cstr,char tChar)
    {
     int tRet;
     char *pChar;
     //库函数strchr。返回该字符在串中最后位置的指针
     pChar=strrchr(cstr,tChar);
     if(pChar)
      tRet=int(pChar-cstr); //计算下标
     else
      tRet=-1;
     return tRet;
    }

    3、播放模式问题

    没想到什么好的办法。。。只好利用定时器来解决此问题了

    if (nIDEvent == LOOP)
     {
      
      if (GetPlayMode(MCI_STATUS_MODE)==MCI_MODE_STOP)
      {
       OnStop();
       OnPlay();
      }
     }
     else if (nIDEvent == ALLLOOP)
     {
      
      if (GetPlayMode(MCI_STATUS_MODE)==MCI_MODE_STOP)
      {
       OnStop();
       m_PlayPos++;
       if (m_PlayPos == m_SaveArray.GetSize())
       {
        m_PlayPos = 0;
       }
       OnPlay();
      }
     }

    4、播放时间的显示

    int Minute = 0;
     int Second = 0;
     unsigned long tTime;
     CString tTemp;
     tTime = GetPlayMode(MCI_STATUS_POSITION);

     tTime = tTime/1000;
     Minute = tTime/60;
     Second=tTime%60+1;
     if(Second==60)
     {
      Second=0;
     }
     tTemp.Format("%d:%d/%d:%d",Minute,Second,m_Minute,m_Second);
     this->SetDlgItemText(IDC_TIME,tTemp);

    5、最后是音量的设置了

    参考了网上的代码

    主要利用了以下的消息函数来完成此功能
     afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
     afx_msg LONG OnMixerCtrlChange(UINT wParam, LONG lParam);

    封装的函数

     //音量控制
     BOOL amdUninitialize();
     BOOL amdInitialize();
     BOOL amdGetMasterVolumeControl();
     BOOL amdGetMasterVolumeValue(DWORD &dwVal) const;
     BOOL amdSetMasterVolumeValue(DWORD dwVal) const;

  • 相关阅读:
    C#根据html生成PDF
    Oracle 存储过程异常处理
    Oracle事务之一:锁和隔离
    跨域解决方案一:使用CORS实现跨域
    AJAX POST&跨域 解决方案
    使用 jQuery Deferred 和 Promise 创建响应式应用程序
    jQuery:多个AJAX/JSON请求对应单个回调并行加载
    解决td标签上的position:relative属性在各浏览器中的兼容性问题
    盘点8种CSS实现垂直居中水平居中的绝对定位居中技术
    JQuery-UI Dialog下使用服务器端按钮失效
  • 原文地址:https://www.cnblogs.com/ccmfc/p/1720789.html
Copyright © 2020-2023  润新知