Click here to Skip to main content
Licence 
First Posted 3 Mar 2006
Views 56,276
Bookmarked 44 times

Ey Media Player

By | 3 Mar 2006 | Article
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 pixels Sample Image - maximum width is 600 pixels
Sample Image - maximum width is 600 pixels Sample 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

About the Author

yazan_nemer

Web Developer

Jordan Jordan

Member

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.


Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
QuestionZoom in, Zoom out?? Pinmemberprogramarisoft22:53 29 Nov '09  
AnswerRe: Zoom in, Zoom out?? PinmemberZooz_hoot12:06 22 Apr '10  
GeneralMy vote of 1 Pinmemberprogramarisoft22:52 29 Nov '09  
GeneralVolume Mute Pinmemberabhineet_be0423:26 19 Oct '09  
GeneralER Diagram and Data Flow Diagram Pinmemberprateekagr198821:04 30 Sep '09  
GeneralMy vote of 1 Pinmembersmton14:44 9 Jul '09  
GeneralApplication fails to initialize Visual Studio 2008 Pinmemberjarmysz11:29 17 Dec '08  
Generalbug PinmemberMember 348086119:40 26 Dec '07  
Generalhey PinmemberReet Dhiman23:56 7 Aug '07  
Questionproblem in playing wav files at different speeds Pinmembersrikanth rao nadipelli19:08 12 Apr '07  
Generalfacing problem in Linking Pinmemberamit chatter18:12 23 Feb '07  
GeneralRe: facing problem in Linking Pinmemberyazan_nemer7:23 24 Feb '07  
GeneralRe: facing problem in Linking Pinmemberyazan_nemer7:25 24 Feb '07  
GeneralRe: facing problem in Linking Pinmembersrikanth rao nadipelli18:57 12 Apr '07  
GeneralLinking errors, unresolved externals PinmemberDiplomat7:59 3 Feb '07  
GeneralEY Media Player is Wonderful Pinmembergan_esh22:55 8 Nov '06  
Generalcompile errors Pinmemberaputic1:12 26 Sep '06  
GeneralVery Good! Pinmemberyinta3:15 16 Aug '06  
GeneralBetter PinmemberKochise9:18 4 Mar '06  
GeneralIt's Good work Pinmemberiabuabduyad2:02 4 Mar '06  
Generalgood! Pinmemberyiqianfeng0:34 4 Mar '06  
GeneralRe: good! Pinmemberlmson2t16:40 13 Jan '07  

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

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

Permalink | Advertise | Privacy | Mobile
Web04 | 2.5.120517.1 | Last Updated 4 Mar 2006
Article Copyright 2006 by yazan_nemer
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid