IMineMusic.c
上传用户:yulinhuamu
上传日期:2009-12-26
资源大小:7287k
文件大小:2k
源码类别:

BREW编程

开发平台:

Visual C++

  1. #include "IMineMusic.h"
  2. //////////////////////////////////////////////////////////////////////
  3. //////////////////////////////////////////////////////////////////////
  4. static void IMINEMUSIC_CBStatus(void * pUser, AEESoundPlayerCmd eCBType, AEESoundPlayerStatus eSPStatus, uint32 dwParam);
  5. //////////////////////////////////////////////////////////////////////
  6. //////////////////////////////////////////////////////////////////////
  7. IMineMusic* IMINEMUSIC_CreateInstance(IShell* pIShell)
  8. {
  9. IMineMusic* pCtl=NULL;
  10. if(NULL==pIShell) return NULL;
  11. pCtl=MALLOCREC(IMineMusic);
  12. if(NULL==pCtl) return NULL;
  13. MEMSET(pCtl,0,sizeof(IMineMusic));
  14. pCtl->m_pIShell=pIShell;
  15. return pCtl;
  16. }
  17. boolean IMINEMUSIC_Release(IMineMusic* pCtl)
  18. {
  19. if(pCtl)
  20. {
  21. if(pCtl->m_pISoundPlayer)
  22. ISOUNDPLAYER_Release(pCtl->m_pISoundPlayer);
  23. FREEIF(pCtl);
  24. }
  25. return TRUE;
  26. }
  27. boolean IMINEMUSIC_Start(IMineMusic* pCtl,TMineMusicType type)
  28. {
  29. AEESoundPlayerInfo info;
  30. if(!pCtl) return FALSE;
  31. IMINEMUSIC_Stop(pCtl);
  32. if(SUCCESS!=ISHELL_CreateInstance(pCtl->m_pIShell, AEECLSID_SOUNDPLAYER, (void **)(&pCtl->m_pISoundPlayer)))
  33. return FALSE;
  34. ISOUNDPLAYER_RegisterNotify(pCtl->m_pISoundPlayer,IMINEMUSIC_CBStatus,pCtl);
  35. //get music name
  36. switch(type)
  37. {
  38. case MMT_FLASH:
  39. info.pData=(void*)"sound/flash.mp3";
  40. break;
  41. case MMT_START:
  42. info.pData=(void*)"sound/start.mid";
  43. break;
  44. case MMT_SUCCESS:
  45. info.pData=(void*)"sound/success.mid";
  46. break;
  47. case MMT_FAILURE:
  48. info.pData=(void*)"sound/failure.mid";
  49. break;
  50. default:
  51. return FALSE;
  52. }
  53. //start new music
  54. info.eInput=SDT_FILE;
  55. if(AEE_SUCCESS==ISOUNDPLAYER_SetInfo(pCtl->m_pISoundPlayer,&info))
  56. ISOUNDPLAYER_Play(pCtl->m_pISoundPlayer);
  57. return TRUE;
  58. }
  59. boolean IMINEMUSIC_Stop(IMineMusic* pCtl)
  60. {
  61. if(pCtl&&pCtl->m_pISoundPlayer)
  62. {
  63. ISOUNDPLAYER_Stop(pCtl->m_pISoundPlayer);
  64. ISOUNDPLAYER_Release(pCtl->m_pISoundPlayer);
  65. pCtl->m_pISoundPlayer=NULL;
  66. }
  67. return TRUE;
  68. }
  69. //////////////////////////////////////////////////////////////////////
  70. //////////////////////////////////////////////////////////////////////
  71. static void IMINEMUSIC_CBStatus(void * pUser, AEESoundPlayerCmd eCBType, AEESoundPlayerStatus eSPStatus, uint32 dwParam)
  72. {
  73. IMineMusic* pCtl=(IMineMusic*)pUser;
  74. if(pCtl&&(pCtl->m_pISoundPlayer)&&(AEE_SOUNDPLAYER_PLAY_CB==eCBType)&&(AEE_SOUNDPLAYER_DONE==eSPStatus)) 
  75. ISOUNDPLAYER_Play(pCtl->m_pISoundPlayer);
  76. }