zoukankan      html  css  js  c++  java
  • mcisendCommand界面播放器2

    继昨天那个mcisendCommand界面播放器之上建立了一个实现基本功能 的播放器了。。

    增加了播放模式、音乐文件显示的功能

    播放模式是利用定时器来实现的。。

    void CPlayTestDlg::OnTimer(UINT nIDEvent)
    {
     // TODO: Add your message handler code here and/or call default
     if (nIDEvent == LOOP)
     {
      if (PlayMode()==MCI_MODE_STOP)
      {
       OnStop();
       OnPlay();
       KillTimer(ALLLOOP);
      }
     }
     else if (nIDEvent == ALLLOOP)
     {
      if (PlayMode()==MCI_MODE_STOP)
      {
       OnStop();
       m_PlayPos++;
       if (m_PlayPos == m_SaveArray.GetSize())
       {
        m_PlayPos = 0;
       }
       OnPlay();
      }
     }
     CDialog::OnTimer(nIDEvent);
    }

    //得到当得播放状态
    DWORD CPlayTestDlg::PlayMode()
    {
     MCI_STATUS_PARMS Status;
     Status.dwCallback=(DWORD)GetSafeHwnd();
     Status.dwItem = MCI_STATUS_MODE;
     Status.dwTrack = NULL;
     mciSendCommand(m_DeviceID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD_PTR)&Status);
     return Status.dwReturn;
    }

    文件显示主要是利用CListCtrl这个控件来显示。。。

    CFileDialog打开多个文件,并且保存到CArray中没有用容器一大杯剧啊。。。。看来还得改改代码才行。。。

    //得到某个字字符最后出现的位置
    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;
    }

    BOOL CPlayTestDlg::OnOpen()
    {
     // TODO: Add your control notification handler code here
     m_Temp.RemoveAll();

     CFileDialog FileDlg(TRUE,"音乐文件",NULL, OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"mp3(*.mp3)|*.mp3|所有文件(*.*)|*.*||");
     if (IDOK == FileDlg.DoModal())
     {
      POSITION pos = FileDlg.GetStartPosition();
      while(pos!=NULL)
      {
       CSaveSound tSave;
       tSave.PathName = FileDlg.GetNextPathName(pos); 

       //得到文件名。。。不知道FileDlg.GetFileTitle()为什么为空
       tSave.SoundName = tSave.PathName.Right(tSave.PathName.GetLength()-FindLast(tSave.PathName,'\\')-1);
       tSave.SoundName = tSave.SoundName.Left(FindLast(tSave.SoundName,'.'));

       m_SaveArray.Add(tSave);
       m_Temp.Add(tSave);
      }
     }
     //添加到ListCtrl中
     if (m_SaveArray.GetSize())
     {
      ShowListCtrl();
     }
     OnPlay();     //播放
     this->GetDlgItem(IDC_LOOP)->EnableWindow(TRUE);
     this->GetDlgItem(IDC_ALLLOOP)->EnableWindow(TRUE);
     return TRUE;
    }

    播放器还没做完。。。

    明天接着做播放器

  • 相关阅读:
    在Flex or AIR中检测你的网络连接是否正常
    设置Adobe Air应用程序属性
    airMeeting
    用Adobe Flex3开发AIR应用程序–入门指南
    Adobe Flash Player 9.0.124 的安全策略更改
    分发,安装和运行AIR应用程序
    永远置于顶层(always on top)的AIR应用
    翻译:SWFObject 2.0官方文档
    C#温故而知新学习系列之.NET框架高级特性—概述.NET框架中的反射(一)
    C#温故而知新学习系列之字符串处理—指定字符串的显示格式(一)
  • 原文地址:https://www.cnblogs.com/ccmfc/p/1719637.html
Copyright © 2011-2022 走看看