C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Как сделать цикличным проигрывание MIDI-файла? / Файлы, папки, диски / Файловая система

Как сделать цикличным проигрывание MIDI-файла?

LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
  if(message==MM_MCINOTIFY)
   if(wParam!=MCI_NOTIFY_ABORTED)
   {
      if(m_bIsPlaing)
      {
          if(SetMidi())
           PlayMidi();
      }
   }

  return CFrameWnd::WindowProc(message, wParam, lParam);
}

BOOL CMainFrame::SetMidi()
{
  StopMidi();
  MCI_OPEN_PARMS OpenParm;
  OpenParm.dwCallback = (DWORD)GetSafeHwnd();
  OpenParm.lpstrDeviceType = NULL;
  OpenParm.lpstrElementName = filename;
  DWORD flags=MCI_OPEN_ELEMENT;
  MCIERROR err;
  err=mciSendCommand(0, MCI_OPEN, flags,(DWORD)&OpenParm);
  if(!err){
   m_nMidideviceID=OpenParm.wDeviceID;
   return TRUE;
  }
  else
  return FALSE;
}

BOOL CMainFrame::PlayMidi(void)
{
  MCI_PLAY_PARMS PlayParm;
  PlayParm.dwCallback =(DWORD)GetSafeHwnd();
  PlayParm.dwFrom=0;
  MCIERROR err;

err=mciSendCommand(m_nMidideviceID,MCI_PLAY,MCI_FROM|MCI_NOTIFY,(DWORD)&PlayParm);
  if(!err)
  {
   m_bIsPlaing=TRUE;
   return TRUE;
  }
  m_bIsPlaing=FALSE;
  return FALSE;
}

BOOL CMainFrame::StopMidi(void)
{
  m_bIsPlaing=FALSE;
  MCI_GENERIC_PARMS generic_params;
  generic_params.dwCallback=(DWORD)GetSafeHwnd();
  mciSendCommand(m_nMidideviceID,MCI_CLOSE,MCI_WAIT,(DWORD)&generic_params);
  return TRUE;
}