现在的位置: 首页 > 综合 > 正文

定时播放音乐程序之三:MCI设备的播放和控制

2012年09月10日 ⁄ 综合 ⁄ 共 1264字 ⁄ 字号 评论关闭

(1) 写注册表,设置开机自动运行

 HKEY sub;
 char bufname[200];
 ::GetModuleFileName(NULL,bufname,200);

 CString str;
 str.Format("%s",bufname);
 CString skey = "Software//Microsoft//Windows//CurrentVersion//Run";
 ::RegCreateKey(HKEY_LOCAL_MACHINE,skey,&sub);
 if (m_autorun.GetCheck())
 {
  ::RegSetValueEx(sub,"ArmyBugle",NULL,REG_SZ,(const BYTE*)str.GetBuffer(0),str.GetLength());
 }
 else
 {
  ::RegDeleteValue(sub,"ArmyBugle");
 }
 ::RegCloseKey(sub);

(2)TIMER事件和MDI设备处理,定时播放音乐

 CTime tt;
 tt = CTime::GetCurrentTime();
 CString tmp = tt.Format("%H:%M");
 if (tmp == strtime)
 {
  KillTimer(1);
  MCIDEVICEID m_nDeviceID;
  MCIDEVICEID m_nElementID;
  MCI_OPEN_PARMS mciOpenParms;

  mciOpenParms.lpstrDeviceType = (LPSTR)MCI_DEVTYPE_WAVEFORM_AUDIO;
  mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_TYPE_ID|MCI_WAIT,(DWORD)(LPVOID)&mciOpenParms);
  m_nDeviceID = mciOpenParms.wDeviceID;

  MCI_OPEN_PARMS mciOpen;
  memset(&mciOpen,0,sizeof(MCI_OPEN_PARMS));
  mciOpen.lpstrElementName = strsound;
  mciSendCommand(m_nDeviceID,MCI_OPEN,MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&mciOpen);
  m_nElementID = mciOpen.wDeviceID;

  MCI_PLAY_PARMS mciPlay;
  mciPlay.dwCallback = (DWORD)this->GetSafeHwnd();
  mciSendCommand(m_nElementID,MCI_PLAY,MCI_NOTIFY,(DWORD)(LPVOID)&mciPlay);
  //SetTimer(1,10000,NULL);    //delete 0515
 }
 CDialog::OnTimer(nIDEvent);

抱歉!评论已关闭.