Click here to Skip to main content
15,895,142 members
Articles / Programming Languages / C++
Article

Ey Media Player

Rate me:
Please Sign up or sign in to vote.
2.68/5 (37 votes)
3 Mar 20062 min read 97.7K   3.4K   47   22
New Media Player Using MFC ,Have multi function play, record, cutting sound, combine sound , change skins, beautiful list music, zoom in video clip, icon in task bar...
Sample Image - maximum width is 600 pixelsSample Image - maximum width is 600 pixels
Sample Image - maximum width is 600 pixelsSample Image - maximum width is 600 pixels

Introduction

EY player is a Mp3, Wave, Mpg, Avi file player with capability to apply multiple special effects (like recode, Play, increase- decrease speed, increase- decrease volume, change skin, Zoom in, Zoom out, full screen, notify icon ...) on the media stream in run time using API, It can manage surround systems by changing sound media place in surround environment and has a highly customizable skinning interface.

Media Control Interface

The Media Control Interface (MCI) provides standard commands for playing multimedia devices and recording multimedia resource files. These commands are a generic interface to nearly every kind of multimedia device.

Instructions

Can be use help.

Using the code

some class's

  • CCode_MCI

  • This header code file have control of Ey media Player ...
    // CCode_MCI window
    
    class CCode_MCI : public CWnd
    {
    
    public:
    
    	////////////
    	////////////
    
    	CCode_MCI();
    	CCode_MCI(HWND hwParent);    
    	virtual  ~CCode_MCI();
    
    	public:
    	HWND hwndParent;
    public:
    	//prototype to zoom screen 
    	void OnView(int zoom);
    	//Combine Wave's
    	void CombineWave(CString Path1,CString Path2);
    	//prototype to determine what point you need cur from
    	void CutTo(unsigned to,unsigned from,CString &SavePath);
    	//Prepare Wave befoer opration to wave
    	void PrepareWave(CString &Path);
    	//prototype to cancle mute sound
    	void OnMuteCancel();
    	//prototype to mute sound
    	void OnMuteOK();
    
    
    	void OnFileInsert();
    	void OnFileEject();
    	//prototype to Speed Decrease file"time"
    	void OnToolsSpeedDecrease();
    	//prototype to Speed Increase file"time"
    	void OnToolsSpeedIncrease();
    	long lPos;
    	void Rwd();
    	void Fwd();
    	void DecreaseVolume();
    	void IncreaseVolume();
    
    	DWORD lVolume;
    	//prototype to determine length file "time"
    	long GetLength();
    	//prototype to get current position file"time"
    	long GetPosition();
    	//prototype to set position file"time"
    	void SetPosition(long lPos);
    	HWND GetWindowHandle();
    	void Resume();
    	void Kill();
    	void Break();
    	void Loop();
    	void Close();
    	HWND Initialize();
    	//prototype to play inupt file
    	void Play();
    	//prototype to stop inupt file
    	void Stop();
    	//prototype to pause inupt file
    	void Pause();
    	//prototype to play inupt file
    	long GetMode();
    	//prototype to determine file path
    	CString GetPath();
    	//prototype to set path file path
    	void SetPath(CString sPath);
    	void SetParent(HWND hParent);
    	HWND GetParent();
    	void * m_buffer;
    	//prototype to increase or decrease sound
    	void SetVolume(DWORD dwVolume);
    	//prototype to get amount sount
    	DWORD GetVolume();
    
    protected:
    	
    	HWND c_Player;
    	CEvent m_Event;
    	CString m_sPath;
    
    	//{{AFX_MSG(CCode_MCI)
    	afx_msg void OnDestroy();
    	//}}AFX_MSG
    	DECLARE_MESSAGE_MAP()
    private:
    	WAVEFORMATEX m_pcmWaveFormat;
    	WAVEFORMATEX m_pcmWaveFormat1;
    	WAVEFORMATEX m_pcmWaveFormat2;
    
    	void * m_buffer1;
    	void * m_buffer2;
    	DWORD m_dwNum;
    	DWORD m_dwNum1;
    	DWORD m_dwNum2;
    
    };
    
    class CParams
    {
    public:
    	CParams() {};
    	virtual  ~CParams() {};
    
    	CWnd* pWnd;
    	HWND  hWnd;
    	CEvent* pEvent;
    };
    /////////////////////////////////////////////////////////////////////////////
  • CEYPlayerDlg

  • class file to main dilalog, write some most important function's, how open file by folder, skin browser..
    //function to open file by folder..
    void CEYPlayerDlg::OnOpenFolder() 
    {
    	ofstream output("C:/CurrentMusic.txt",ios::app);
        //ifstream input("CurrentMusic.txt",ios::in);
    
    
    		 BROWSEINFO brow;
    		 LPITEMIDLIST path;
    
    		 ZeroMemory(&brow,sizeof(brow));
    		 brow.hwndOwner=m_hWnd;
    		 brow.pszDisplayName=0;
    		 brow.lpszTitle="Welcome to EY Player Select You List";
    		 brow.ulFlags=BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;
    
    
            TCHAR Display[MAX_PATH];
    
    		path=SHBrowseForFolder(&brow);
    		if (path) 
    		SHGetPathFromIDList(path,Display);
    
    	///	Recurse(Display);
    
    	///////////////////////////////////////////////////////////
    LPCTSTR pstr=Display;
    
       CFileFind finder;
       CString strWildcard(pstr);
       strWildcard += _T("\\*.*");
       
       BOOL bWorking = finder.FindFile(strWildcard);
    
       while (bWorking)
       {
          bWorking = finder.FindNextFile();
    
    
          if (finder.IsDots())
             continue;
    	 
    	  LPTSTR nume;
    
    
    
      CString nu=finder.GetFilePath();
      nume=nu.GetBuffer(sizeof(nu));
    
    
    	if (finder.IsDirectory())
    	{
    	}
    
    	else 
    	{
    		char ext[100];
    		strcpy(ext,PathFindExtension(nume));
    		char name[1024];
    
    		strcpy(name,PathFindFileName(nume));
    		name[strlen(name)-strlen(ext)]='\0';	
    
    
    		if (
    			(strcmp(ext,".wav")==0)||		
    			(strcmp(ext,".mp3")==0)||
    			(strcmp(ext,".mpg")==0)||
    			(strcmp(ext,".avi")==0)//||
    			//(strcmp(ext,".DAT")==0)
    			)
    			{
    
    
    
    				strcpy(songs[id].name,name);
    				strcpy(songs[id].path,nume);
    		
    			char ch[10];
    	
    				if(songs[id].name!=NULL )
    					{
    						m_MusicName.SetTextMatrix(Index+1,1,songs[id].name);
    						m_MusicName.SetTextMatrix(Index+1,0,itoa(Index+1,ch,10));
    						Files[Index]=nume;
    						Index++;
    					
    					}
    					
    					m_MusicName.SetRows(Index+2);
                          			CString repPath=nume;
    					repPath.Replace(92,'/');
    					repPath.Replace(32,'%');
    					output<<static_cast<string>(repPath)<<"\n";
    
    						
    			}//if
    
    		}//else
    
    
    
          if (finder.IsDirectory())
          {
             CString str = finder.GetFilePath();
    	    
    
          }
      }//while
    
       finder.Close();
    	///////////////////
    
    }
    
    //function to browser skin change's
    void CEYPlayerDlg::OnSkinbrowser() 
    {
    	CFileDialog sk(TRUE,NULL,NULL, OFN_HIDEREADONLY,"SKIN Files (*.skin)|*.skin|");
    	if(sk.DoModal() == IDOK)
    	{
    			m_Path = sk.GetPathName();
              SetSkin(m_Path,m_Path.GetLength(),10);
    		  	
    		  ///////////////////////////
    		  if((isMPEG() ||isAVI())&&m_bPlay)
    		  {
    			CRgn a,b;
    			CRect rect;
    			::GetWindowRect(m_hWnd,rect);
    			::SetWindowPos(m_hWnd,NULL,rect.left,rect.top,m_skin.iWidth+200,m_skin.iHeight+m_skin.iWidth,SWP_NOZORDER);
    			::ShowWindow(mci.GetWindowHandle(),SW_MAXIMIZE);
    		  }
    /////////////////////////////////////////////////
    
    	}
    }
  • CFindEdit

  • Function's to update your current play list
    //function to add item's to current play list
    void CFindEdit::OnAddItemes() 
    {
    
    	ofstream output("C:/CurrentMusic.txt",ios::app);
    
    	CFileDialog openMusic(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY,"mp3 (*.mp3)|*.mp3|mpg (*.mpg)|*.mpg|wav (*.wav)|*.wav|avi (*.avi)|*.avi||");
    	//openMusic(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY,"mp3 (*.mp3)|*.mp3|dat (*.dat)|*.dat|mpg (*.mpg)|*.mpg|wav (*.wav)|*.wav|avi (*.avi)|*.avi|All Files |*.*||");
    	if(openMusic.DoModal() == IDOK)
    	{
    	currPos = openMusic.GetStartPosition();
    
    
    		while(currPos != NULL)
    		{
    			m_Path = openMusic.GetNextPathName(currPos);
    
    			Files[indexfound]=m_Path;
    			
    			CString setPath=Files[indexfound];
    			setPath.Replace(32,'%');
    			setPath.Replace(92,'/');
    			output<<static_cast<string> (setPath)<<"\n";
    
    			m_Edit.AddString(Files[indexfound]);
    		
    			indexfound++;
    		}
    	
    
    	}		
    }
    
    
    //function to selectt change list file from play list
    void CFindEdit::OnSelchangeList1() 
    {
    	UpdateData(true);
    	m_Edit.GetText(m_Edit.GetCurSel(),m_Search);
    	UpdateData(false);
    	
    }
    //function to remove file from play list
    void CFindEdit::OnRemove() 
    {
    	//indexfound-
    	for(int del=indexfound-m_Edit.GetCurSel()-1 ; del < indexfound ; del++ )
    		Files[del]=Files[del+1];
    	indexfound--;
    
    
    	m_Edit.DeleteString(m_Edit.GetCurSel());
    
    	
    }
  • CFullScreen

  • //function to hot keys in fullscreen
    BOOL CFullScreen::PreTranslateMessage(MSG* pMsg) 
    {
    
    
    	if (pMsg->message==WM_KEYDOWN)
    	{
    	
    		if(pMsg->wParam=='F'&&!bReturn)
    		{
    			long pos;
    				pos=mci.GetPosition();
    					mci.Pause();
    
    					mci.Initialize();
    					::SetWindowPos(m_hWnd, HWND_TOPMOST,-2,-30,cx+4,cy+31, SWP_NOZORDER); 
    					::ShowWindow(mci.GetWindowHandle(),SW_MAXIMIZE); 
    					mci.SetPosition(pos);
    					mci.Play();
    					bReturn=true;
    		}
    	    if(pMsg->wParam==38)
    			            OnVolumeIncrease();
    			
    		if(pMsg->wParam==40)
    				        OnVolumeDecrease();
    				
    		if(pMsg->wParam==39)
    				        OnPlaybackSpeed();
    					
    		if(pMsg->wParam==37)
    					   OnPlaybackSlow();
    
    		if(pMsg->wParam==83)
    						OnPlaybackStop();
    		
    
    		if(pMsg->wParam==78)
    						OnPlaybackNext();
    
    		if(pMsg->wParam==80)
    			            OnPlaybackPlay();	
    	
    	
    		if(pMsg->wParam==77)
    					     OnVolumeMute();
    
    		if(pMsg->wParam==107)//+
    		{
    					CRect rect;
    				::GetWindowRect(m_hWnd,rect);
    					CRect rect1;
    				if(rect.bottom-rect.top < cy + 30 && !bReturn)
    				{
    					
    					iH+=10;
    					iW+=(w*10)/h;
    					::SetWindowPos(m_hWnd,NULL,rect.left,rect.top,iW+2,iH+30,SWP_NOZORDER);	
     					::GetWindowRect(m_hWnd,rect1);
    					
    				}
    				
    				if(rect1.bottom-rect1.top>=cy+30&&!bReturn)
    				{
    				//	ShowWindow(3);
    					long pos;
    					pos=mci.GetPosition();
    					mci.Pause();
    
    					mci.Initialize();
    					::SetWindowPos(m_hWnd, HWND_TOPMOST,-2,-30,cx+4,cy+31, SWP_NOZORDER); 
    					::ShowWindow(mci.GetWindowHandle(),SW_MAXIMIZE); 
    					mci.SetPosition(pos);
    					mci.Play();
    					bReturn=true;
    				}
    				else if(!bReturn)
    					mci.OnView(((iW*100)/w));
    				
    			
    			
    		}
    		if(pMsg->wParam==109)
    		{
    			if(bReturn)
    			{
    				bReturn=false;
    				::SetWindowPos(m_hWnd,NULL,0,0,(w*cy)/h+2,cy+30,NULL);	
    				iH=cy;
    				iW=(w*cy)/h;
    			}
    			
    			m_zoom-=1;
    			CRect rect;
    			CRect rect1;
    			::GetWindowRect(m_hWnd,rect);
    			if(rect.bottom-rect.top>h+30)
    			{
    				iH-=10;
    				iW-=(w*10)/h;
    				::SetWindowPos(m_hWnd,NULL,rect.left,rect.top,iW+2,iH+30,NULL);	
    				::GetWindowRect(m_hWnd,rect1);
    			}
    			if(rect1.bottom-rect1.top<h+30)
    			{
    				::SetWindowPos(m_hWnd,NULL,rect.left,rect.top,w+2,h+30,SWP_NOZORDER);	
    				iH=h;
    				iW=w;
    							
    			}
    			else if(!bReturn)
    				mci.OnView((iW*100/w));
    
    
    		}
     	}
    
               
    	return CDialog::PreTranslateMessage(pMsg);
    }
    
    
    //fuction to increase sound call from hot keys
    void CFullScreen::OnVolumeIncrease()
    {
    	lVol=mci.GetVolume();
    	lVol+=10000;
    	
    	mci.SetVolume(lVol);
    	//m_skin.SetVolumePos(mci.GetVolume());
    	//m_Volume.SetWindowPos(NULL,m_skin.iVolumeX,m_skin.iVolumeY ,m_skin.iVolumeWidth ,m_skin.iVolumeHeight,NULL);
    	//m_Volume.SetBitmap(m_skin.GetVolume(1));
    
    }
    //fuction to decrease sound call from hot keys
    void CFullScreen::OnVolumeDecrease()
    {
    /*	lVol=mci.GetVolume();
    	lVol-=10000;
    	
    	mci.SetVolume(lVol);
    	*/
    
    		if( lVol > 5000)
    	{
    		lVol=mci.GetVolume();
    		lVol-=5000;
    		mci.SetVolume((lVol<1?0:lVol));
    		
    		
    		
    	}
    	//m_skin.SetVolumePos(mci.GetVolume());
    	//m_Volume.SetWindowPos(NULL,m_skin.iVolumeX,m_skin.iVolumeY ,m_skin.iVolumeWidth ,m_skin.iVolumeHeight,NULL);
    	//m_Volume.SetBitmap(m_skin.GetVolume(1));
    
    }
    BOOL findMute1=true;
    //fuction to mute sound call from hot keys
    void CFullScreen::OnVolumeMute()
    {
    
    	if(findMute1==true)
    	{
    	    mci.OnMuteOK();
    		findMute1=false;
    	}
    	else
    	{
    		mci.OnMuteCancel();
    		findMute1=true;
    	}
    	
    }
    //fuction to increase output clip call from hot keys
    
    void CFullScreen::OnPlaybackSpeed()
    {
    	mci.OnToolsSpeedIncrease();
    }
    //fuction to decrease output clip call from hot keys
    void CFullScreen::OnPlaybackSlow()
    {
    	mci.OnToolsSpeedDecrease();
    }
    
    
    //fuction to Pause clip call from hot keys
    void CFullScreen::OnPlaybackPause() 
    {
    	mci.Pause();
    	KillTimer(ID_PLAY_SLIDER);
    }
    
    //fuction to stop clip call from hot keys
    void CFullScreen::OnPlaybackStop()
    {
    	    mci.Stop();
    		KillTimer(ID_PLAY_SLIDER);
    }
    //fuction to play clip call from hot keys
    void CFullScreen::OnPlaybackPlay()
    {
    	mci.Play();
    
    }
    //fuction to play next  clip call from hot keys
    void CFullScreen::OnPlaybackNext()
    {
    	CEYPlayerDlg m_CEYPlayerDlg;
    	
    	MessageBox(m_CEYPlayerDlg.Files[fullIndex++]);
    	mci.Stop();
    	mci.SetPath(m_CEYPlayerDlg.Files[fullIndex++]);
    	
    	mci.Play();
    			
    	::ShowWindow(mci.GetWindowHandle(),SW_MAXIMIZE);
    
    }
    //fuction to zoom in or out  clip call from scroll mouse
    BOOL CFullScreen::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) 
    {
    
    	if(zDelta<0)
    	{
    		CRect rect;
    				::GetWindowRect(m_hWnd,rect);
    					CRect rect1;
    				if(rect.bottom-rect.top < cy + 30 && !bReturn)
    				{
    					
    					iH+=10;
    					iW+=(w*10)/h;
    					::SetWindowPos(m_hWnd,NULL,rect.left,rect.top,iW+2,iH+30,SWP_NOZORDER);	
     					::GetWindowRect(m_hWnd,rect1);
    					
    				}
    				
    				if(rect1.bottom-rect1.top >= cy + 30 && !breturn)
    				{
    				//	ShowWindow(3);
    					long pos;
    					pos=mci.GetPosition();
    					mci.Pause();
    
    					mci.Initialize();
    					::SetWindowPos(m_hWnd, HWND_TOPMOST,-2,-30,cx+4,cy+31, SWP_NOZORDER); 
    					::ShowWindow(mci.GetWindowHandle(),SW_MAXIMIZE); 
    					mci.SetPosition(pos);
    					mci.Play();
    					bReturn=true;
    				}
    				else if(!bReturn)
    					mci.OnView((iW*100)/w);
    				
    		
    	}
    	else 
    	{
    	if(bReturn)
    			{
    				bReturn=false;
    				::SetWindowPos(m_hWnd,NULL,0,0,(w*cy)/h+2,cy+30,NULL);	
    				iH=cy;
    				iW=(w*cy)/h;
    			}
    			
    			m_zoom-=1;
    			CRect rect;
    			CRect rect1;
    			::GetWindowRect(m_hWnd,rect);
    			if(rect.bottom-rect.top > h + 30 )
    			{
    				iH-=10;
    				iW-=(w*10)/h;
    				::SetWindowPos(m_hWnd,NULL,rect.left,rect.top,iW+2,iH+30,NULL);	
    				::GetWindowRect(m_hWnd,rect1);
    			}
    			if(rect1.bottom-rect1.top < h + 30)
    			{
    				::SetWindowPos(m_hWnd,NULL,rect.left,rect.top,w+2,h+30,SWP_NOZORDER);	
    				iH=h;
    				iW=w;
    							
    			}
    			else if(!bReturn)
    				mci.OnView((iW*100/w));
    	}
    	
    	return CDialog::OnMouseWheel(nFlags, zDelta, pt);
    }
    
    void CFullScreen::OnRButtonUp(UINT nFlags, CPoint point) 
    {
    	// TODO: Add your message handler code here and/or call default
    	
    	CDialog::OnRButtonUp(nFlags, point);
    }
    
    void CFullScreen::OnLButtonDown(Uint nFlags, CPoint point) 
    {
    	CDialog::OnLButtonDown(nFlags, point);
    }
  • CSkin

  • class to change skin..
    //function to load default skin
    void CSkin::LoadSkin(CString path)
    {
    	ifstream input(path,ios::in);
    
    	
    	sFilePath=path;
    	char TestButton[6];
    	char TestSlider[6];
    	
    	input>>  sSkinPath ;//Get from Skin File
    	input>>  sMainImage ;//Get from Skin File
    	input>> iWidth;
    	input>> iHeight;
    	input>>  MainList ;//Get from Skin File
    	input>> iMainListWidth;
    	input>> iMainListHeight;
    	input>> bMainListDirection;
    	input>>TestButton;
    
    	input>>  sPlay ;
    	input>> iPlayWidth;
    	input>> iPlayHeight;
    	input>> iPlayX;//position on image relative in x
    	input>> iPlayY;//position on image relative in y
    	input>>  sStop ;
    	input>> iStopWidth;
    	input>> iStopHeight;
    	input>> iStopX;
    	input>> iStopY;
    	input>>  sBack ;
    	input>> iBackWidth;
    	input>> iBackHeight;
    	input>> iBackX;
    	input>> iBackY;
    	input>>  sBackword ;
    	input>> iBackwordWidth;
    	input>> iBackwordHeight;
    	input>> iBackwordX;
    	input>> iBackwordY;
    	input>>  sCutfrom ;
    	input>> iCutfromWidth;
    	input>> iCutfromHeight;
    	input>> iCutfromX;
    	input>> iCutfromY;
    	input>>  sCutto ;
    	input>> iCuttoWidth;
    	input>> iCuttoHeight;
    	input>> iCuttoX;
    	input>> iCuttoY;
    	input>>  sExit ;
    	input>> iExitWidth;
    	input>> iExitHeight;
    	input>> iExitX;
    	input>> iExitY;
    	input>>  sForword ;
    	input>> iForwordWidth;
    	input>> iForwprdHeight;
    	input>> iForwordX;
    	input>> iForwordY;
    	input>>  sList ;
    	input>> iListWidth;
    	input>> iListHeight;
    	input>> iListX;
    	input>> iListY;
    	input>>  sMinimize ;
    	input>> iMinimizeWidth;
    	input>> iMinimizeHeight;
    	input>> iMinimizeX;
    	input>> iMinimizeY;
    	input>>  Next ;
    	input>> iNextWidth;
    	input>> iNextHeight;
    	input>> iNextX;
    	input>> iNextY;
    	input>>  sRecord ;
    	input>> iRecordWidth;
    	input>> iRecordHeight;
    	input>> iRecordX;
    	input>> iRecordY;
    	input>>  sFullScreen ;
    	input>> iFullScreenWidth;
    	input>> iFullScreenHeight;
    	input>> iFullScreenX;
    	input>> iFullScreenY;
    	input>>  sSound ;
    	input>> iSoundWidth;
    	input>> iSoundHeight;
    	input>> iSoundX;
    	input>> iSoundY;
    	input>>  sMenu ;
    	input>> iMenuWidth;
    	input>> iMenuHeight;
    	input>> iMenuX;
    	input>> iMenuY;
    
    	input>>TestSlider;
    	input>>  sBalance ;
    	input>> iBalanceWidth;
    	input>> iBalanceHeight;
    	input>> iBalanceX;
    	input>> iBalanceY;
    	input>> iBalanceXStart;//Slider length Start
    	input>> iBalanceXEnd;//Slider Length End
    	input>> bBalanceDirection;
    	input>>  sVolume ;
    	input>> iVolumeWidth;
    	input>> iVolumeHeight;
    	input>> iVolumeX;
    	input>> iVolumeY;
    	input>> iVolumeXStart;
    	input>> iVolumeXEnd;
    	input>> bVolumeDirection;
    	input>>  sPlaySlider ;
    	input>> iPlaySliderWidth;
    	input>> iPlaySliderHeight;
    	input>> iPlaySliderX;
    	input>> iPlaySliderY;
    	input>> iPlaySliderXStart;
    	input>> iPlaySliderXEnd;
    	input>>bPlaySliderDirection;
    }
  • CTaskBar

  • header file CTaskBar to create notfiy icon, Ey menu, Ey play list. in notfiy icon right click get "Ey menue", left click get "menu play list"
    class CTaskBar : public CWnd
    {
    // Construction
    public:
    		int create ( CWnd* p, UINT message, LPCTSTR tip, HICON i ) ;
    		LRESULT onusermessage ( WPARAM w, LPARAM l ) ;
    		virtual  LRESULT WindowProc ( UINT message, WPARAM w, LPARAM l ) ;
    		void remove( ) ;
    		void setdefault( ) ;
    		void seticon ( HICON h ) ;
    int m_tIndex;
    
    CString  m_mPath[200];
    	private :
    
    		NOTIFYICONDATA m_nid ;
    		CMenu m_mymenu ;
    		CMenu m_mylist ;
    
    		
    
    	DECLARE_MESSAGE_MAP()
    };
  • CWave

  • class to wave operation combine to wave's, cut from, cut to, record sound from mic or sound card..
    class CWave : public CObject  
    {
    	DECLARE_SERIAL(CWave)
    public:
    	void SetBuffer(void* pBuffer, DWORD dwNumSamples, BOOL bCopy = false);
    	void Load(const CString& strFile);
    	void Save(const CString& strFile);
    	DWORD GetBufferLength() const;
    	DWORD GetNumSamples() const;
    	void* GetBuffer() const;
    	void Save(CFile* f);
    	void Load(CFile* f);
    	WAVEFORMATEX GetFormat() const;
    	void BuildFormat(WORD nChannels, DWORD nFrequency, WORD nBits);
    	CWave();
    	CWave(const CWave& copy);
    	CWave& operator=(const CWave& wave);
    	virtual  ~CWave();
    	virtual  void Serialize( CArchive& archive );
    private:
    	CWaveBuffer m_buffer;
    	WAVEFORMATEX m_pcmWaveFormat;
    };
  • CWaveBuffer

  • CWaveDevice

  • SONGINF

  • class's to wave operation combine to wave's, cut from, cut to, record sound from mic or sound card..

    EY Media Player

    After concluding that project, I decided to try writing a Media Player, and that'is it. Using potentials of CStatic control as a CWnd derived class, I made a GUI for my wrapper class. I used a CStatic control to hold onto video media playback (if exist). This CStatic control rules as CEasyPlayer instance parent. Changing approach this application did not used Loop() member function for continuous media playback. Instead a timer used to periodically check if media stopped or not.

    I must mention Ashraf Shaheen he Design the interface media player. Thank you very much Ashraf Shaheen.

    This application is dedicated to my Yazan nemer & Emad ziad.

    History

    This application create in 2005, deployment in 2006.
    Project Graduation from Al-zaytoonah university....

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
Jordan Jordan
CAREER OBJECTIVE:
To obtain a challenging position in a fast growing company offering opportunities for professional growth.

EXPERINCE:
Software developer from 11 October 2005 until this moment in
Edata Solutions & Tech Consulting. E-Trading Solutions work in ASP.Net
Using VB.Net language.

Comments and Discussions

 
QuestionZoom in, Zoom out?? Pin
programarisoft29-Nov-09 22:53
programarisoft29-Nov-09 22:53 
AnswerRe: Zoom in, Zoom out?? Pin
Ynemer22-Apr-10 12:06
professionalYnemer22-Apr-10 12:06 
GeneralMy vote of 1 Pin
programarisoft29-Nov-09 22:52
programarisoft29-Nov-09 22:52 
GeneralVolume Mute Pin
Agarwal Abhineet19-Oct-09 23:26
Agarwal Abhineet19-Oct-09 23:26 
GeneralER Diagram and Data Flow Diagram Pin
prateekagr198830-Sep-09 21:04
prateekagr198830-Sep-09 21:04 
GeneralMy vote of 1 Pin
smton9-Jul-09 14:44
smton9-Jul-09 14:44 
GeneralApplication fails to initialize Visual Studio 2008 Pin
jarmysz17-Dec-08 11:29
jarmysz17-Dec-08 11:29 
Generalbug Pin
Member 348086126-Dec-07 19:40
Member 348086126-Dec-07 19:40 
Generalhey Pin
Reet Dhiman7-Aug-07 23:56
Reet Dhiman7-Aug-07 23:56 
Questionproblem in playing wav files at different speeds Pin
srikanth rao nadipelli12-Apr-07 19:08
srikanth rao nadipelli12-Apr-07 19:08 
Generalfacing problem in Linking Pin
amit chatter23-Feb-07 18:12
amit chatter23-Feb-07 18:12 
GeneralRe: facing problem in Linking Pin
yazan_nemer24-Feb-07 7:23
yazan_nemer24-Feb-07 7:23 
GeneralRe: facing problem in Linking Pin
yazan_nemer24-Feb-07 7:25
yazan_nemer24-Feb-07 7:25 
GeneralRe: facing problem in Linking Pin
srikanth rao nadipelli12-Apr-07 18:57
srikanth rao nadipelli12-Apr-07 18:57 
GeneralLinking errors, unresolved externals Pin
Diplomat3-Feb-07 7:59
Diplomat3-Feb-07 7:59 
GeneralEY Media Player is Wonderful Pin
gan_esh8-Nov-06 22:55
gan_esh8-Nov-06 22:55 
Generalcompile errors Pin
aputic26-Sep-06 1:12
aputic26-Sep-06 1:12 
GeneralVery Good! Pin
yinta16-Aug-06 3:15
yinta16-Aug-06 3:15 
GeneralBetter Pin
Kochise4-Mar-06 9:18
Kochise4-Mar-06 9:18 
It's improving, glad to see it, I was confident in your skills Smile | :) Yet, not so much code in your article, more explanations please Smile | :)

Kochise

In Code we trust !
GeneralIt's Good work Pin
Iyad Abu Abdu4-Mar-06 2:02
Iyad Abu Abdu4-Mar-06 2:02 
Generalgood! Pin
yiqianfeng4-Mar-06 0:34
yiqianfeng4-Mar-06 0:34 
GeneralRe: good! Pin
lmson2t13-Jan-07 16:40
lmson2t13-Jan-07 16:40 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.