⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myplayerdlg.cpp

📁 一种类似千千静听的音乐播放器
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		if(m_strPlayListArray.GetSize()>0){
			Play(m_nPlayOrder[0]);
			m_nNowPlaying=0;		
		}
		return;
	}

	Play(n);

	if(m_nPlayMode==MODE_RAND){
		for(int i=0;i<m_strPlayListArray.GetSize();i++){
			if(m_nPlayOrder[i]==n){
				m_nNowPlaying=i;
				break;
			}
		}
	}else{
		m_nNowPlaying=n;
	}
	
}

void CMyPlayerDlg::OnBtnPrev() 
{
	// TODO: Add your control notification handler code here
	if(m_strPlayListArray.GetSize()==0)
		return;

	m_nNowPlaying--;
	if(m_nNowPlaying<0)
		m_nNowPlaying=m_strPlayListArray.GetSize()-1;
	Play(m_nPlayOrder[m_nNowPlaying]);
}

void CMyPlayerDlg::OnBtnStop() 
{
	// TODO: Add your control notification handler code here
	if(hAudio!=NULL){		
		MCIWndStop(hAudio);
		m_nTime=0;
		fPlaying=FALSE;
		strTime="00:00";
		m_slide.SetSlidePos(0);
	    InvalidateRect(&rectTime,TRUE);
	}
}



void CMyPlayerDlg::CirculatePlay()
{
	if(hAudio==NULL)
		return;
	if(MCIWndGetPosition(hAudio)>=MCIWndGetLength(hAudio)){
		if(m_nPlayMode!=MODE_SINGLE){		
			m_nNowPlaying++;
			m_nNowPlaying%=m_strPlayListArray.GetSize();		
		}
		Play(m_nPlayOrder[m_nNowPlaying]);	
	}
}




BOOL CMyPlayerDlg::IsFileExist(CString strFileName)
{
	HANDLE hFind;
	WIN32_FIND_DATA wfd;
	hFind=FindFirstFile(strFileName,&wfd);
	if(hFind==INVALID_HANDLE_VALUE)
		return FALSE;
    FindClose(hFind);
	return TRUE;
}

BOOL CMyPlayerDlg::ReadConfig()
{
	CString strFileName;
	strFileName.Format("%s\\config.dat",strCurrentDir);
	if(!IsFileExist(strFileName))
		return FALSE;
	
	ifstream infile(strFileName,ios::in);
	if(!infile)
		return FALSE;
	TCHAR szTemp[500];
	CString strGet;
	TCHAR  szNum[10];
    int nPos;

	infile.getline(szTemp,500);
	strGet=szTemp;
	if(strGet.IsEmpty())
		return FALSE;

	nPos=strGet.Find("playlist:",0);
	if(nPos<0)
		return FALSE;
	strGet=strGet.Right(strGet.GetLength()-9);
	lstrcpy(szNum,strGet);
	nCurrentList=atoi(szNum);
    ///////////////////////

	infile.getline(szTemp,500);
	strGet=szTemp;
	if(strGet.IsEmpty())
		return FALSE;

	nPos=strGet.Find("playmode:",0);
	if(nPos<0)
		return FALSE;
	strGet=strGet.Right(strGet.GetLength()-9);
	lstrcpy(szNum,strGet);
	m_nPlayMode=atoi(szNum);
	////////////////////////////

	infile.getline(szTemp,500);
	strGet=szTemp;
	if(strGet.IsEmpty())
		return FALSE;

	nPos=strGet.Find("volume:",0);
	if(nPos<0)
		return FALSE;
	strGet=strGet.Right(strGet.GetLength()-7);
	lstrcpy(szNum,strGet);
	m_nVolume=atoi(szNum);

	////////////////////////////

	infile.getline(szTemp,500);
	strGet=szTemp;
	if(strGet.IsEmpty())
		return TRUE;

	nPos=strGet.Find("lyricpath:",0);
	if(nPos<0)
		return TRUE;
	m_strLyricPath=strGet.Right(strGet.GetLength()-10);
	
     infile.close();

	 return TRUE;	

}

void CMyPlayerDlg::WriteConfig()
{
	CString strFileName;
	strFileName.Format("%s\\config.dat",strCurrentDir);
	ofstream outfile(strFileName,ios::out);
	if(!outfile)
		return;
	outfile<<"playlist:"<<nCurrentList<<endl;
	outfile<<"playmode:"<<m_nPlayMode<<endl;
	outfile<<"volume:"<<m_nVolume<<endl;
	outfile<<"lyricpath:"<<m_strLyricPath<<endl;

	outfile.close();
}

void CMyPlayerDlg::OnRButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
    
	DestroyMenuDlg();
	CDialog::OnRButtonDown(nFlags, point);
}

void CMyPlayerDlg::OnBtnShowmenu() 
{
	// TODO: Add your control notification handler code here
   CRect rect;
   m_btnShowMenu.GetWindowRect(&rect);   
    
   CMenu m_Menu,m_PlayMenu,m_VolumeMenu,m_ModeMenu,m_LyricMenu;

   m_PlayMenu.CreatePopupMenu();
   m_PlayMenu.AppendMenu(MF_STRING,IDC_MENU_PLAY,"播放");
   m_PlayMenu.AppendMenu(MF_STRING,IDC_MENU_PAUSE,"暂停");
   m_PlayMenu.AppendMenu(MF_STRING,IDC_MENU_STOP,"停止");
   m_PlayMenu.AppendMenu(MF_SEPARATOR,0,"");
   m_PlayMenu.AppendMenu(MF_STRING,IDC_MENU_PREV,"上一首");
   m_PlayMenu.AppendMenu(MF_STRING,IDC_MENU_NEXT,"下一首");
   m_PlayMenu.AppendMenu(MF_SEPARATOR,0,"");
   m_PlayMenu.AppendMenu(MF_STRING,IDC_MENU_OPEN,"打开...");

   m_VolumeMenu.CreatePopupMenu();
   m_VolumeMenu.AppendMenu(MF_STRING,IDC_MENU_VOLUP,"增大");
   m_VolumeMenu.AppendMenu(MF_STRING,IDC_MENU_VOLDOWN,"减少");
   m_VolumeMenu.AppendMenu(MF_STRING,IDC_MENU_VOLSLC,"静音");

   m_ModeMenu.CreatePopupMenu();
   m_ModeMenu.AppendMenu(MF_STRING,IDC_MENU_RAND,"随机");
   m_ModeMenu.AppendMenu(MF_STRING,IDC_MENU_SEQ,"顺序");
   m_ModeMenu.AppendMenu(MF_STRING,IDC_MENU_SINGLE,"单曲");

   m_LyricMenu.CreatePopupMenu();
   if(!m_strLyricPath.IsEmpty()){	   
	   m_LyricMenu.AppendMenu(MF_STRING,IDC_MENU_OPEN_LYRICPATH,m_strLyricPath);
	   m_LyricMenu.AppendMenu(MF_SEPARATOR,0,"");
   }
   m_LyricMenu.AppendMenu(MF_STRING,IDC_SET_LYRICPATH,"设置播放歌词路径..."); 

   m_Menu.CreatePopupMenu();
   m_Menu.AppendMenu(MF_STRING,IDC_ABOUT_STAR,"星空旋律...");
   m_Menu.AppendMenu(MF_SEPARATOR,0,"");
   m_Menu.AppendMenu(MF_POPUP,(UINT)m_PlayMenu.m_hMenu,"播放控制");
   m_Menu.AppendMenu(MF_POPUP,(UINT)m_VolumeMenu.m_hMenu,"音量控制");
   m_Menu.AppendMenu(MF_POPUP,(UINT)m_ModeMenu.m_hMenu,"播放模式");
   m_Menu.AppendMenu(MF_SEPARATOR,0,"");
   m_Menu.AppendMenu(MF_POPUP,(UINT)m_LyricMenu.m_hMenu,"歌词路径");
   m_Menu.AppendMenu(MF_SEPARATOR,0,"");
   m_Menu.AppendMenu(MF_STRING,IDC_BTN_EXIT,"退出");   
  
   
   m_Menu.TrackPopupMenu(TPM_RIGHTBUTTON,rect.left,
	   rect.bottom,this,NULL);
  
}

void CMyPlayerDlg::OnKillFocus(CWnd* pNewWnd) 
{
	CDialog::OnKillFocus(pNewWnd);
	
	// TODO: Add your message handler code here
	DestroyMenuDlg();
}

void CMyPlayerDlg::OnMenuNext() 
{
	// TODO: Add your command handler code here
	OnBtnNext();
	DestroyMenuDlg();
}

void CMyPlayerDlg::OnMenuOpen() 
{
	// TODO: Add your command handler code here
	OnBtnOpen();
	DestroyMenuDlg();
}

void CMyPlayerDlg::OnMenuPlay() 
{
	// TODO: Add your command handler code here
	OnBtnPlay();
	DestroyMenuDlg();
}

void CMyPlayerDlg::OnMenuPrev() 
{
	// TODO: Add your command handler code here
	OnBtnPrev();
	DestroyMenuDlg();
}

void CMyPlayerDlg::OnMenuRand() 
{
	// TODO: Add your command handler code here
    if(m_nPlayMode==MODE_SEQ){
		OnStaticMode();
		OnStaticMode();
	}else if(m_nPlayMode==MODE_SINGLE){
		OnStaticMode();
	}
	DestroyMenuDlg();
}

void CMyPlayerDlg::OnMenuSeq() 
{
	// TODO: Add your command handler code here
	if(m_nPlayMode==MODE_SINGLE){
		OnStaticMode();
		OnStaticMode();
	}else if(m_nPlayMode==MODE_RAND){		
		OnStaticMode();
	}

	DestroyMenuDlg();
}

void CMyPlayerDlg::OnMenuSingle() 
{
	// TODO: Add your command handler code here
	if(m_nPlayMode==MODE_RAND){
		OnStaticMode();
		OnStaticMode();
	}else if(m_nPlayMode==MODE_SEQ){		
		OnStaticMode();
	}
	DestroyMenuDlg();
}

void CMyPlayerDlg::OnMenuStop() 
{
	// TODO: Add your command handler code here
	OnBtnStop();
	DestroyMenuDlg();
}

void CMyPlayerDlg::OnMenuVoldown() 
{
	// TODO: Add your command handler code here
	m_nVolume--;
	if(m_nVolume<0)
		m_nVolume=0;
	m_volume.SetPos(m_nVolume);
	if(hAudio!=NULL){
		int nVol=m_nVolume*63;
		if(nVol>1000)
			nVol=1000;
		MCIWndSetVolume(hAudio,nVol);
	}
	DestroyMenuDlg();
}

void CMyPlayerDlg::OnMenuPause() 
{
	// TODO: Add your command handler code here

	m_stcPlay.SetWindowText("暂停");
	MCIWndPause(hAudio);
    fPlay=FALSE;
	DestroyMenuDlg();
	
}

void CMyPlayerDlg::OnMenuVolslc() 
{
	// TODO: Add your command handler code here
	m_nVolume=0;

	m_volume.SetPos(m_nVolume);
	if(hAudio!=NULL){		
		MCIWndSetVolume(hAudio,0);
	}
	DestroyMenuDlg();
}

void CMyPlayerDlg::OnMenuVolup() 
{
	// TODO: Add your command handler code here
	m_nVolume++;
	if(m_nVolume>16)
		m_nVolume=16;
	m_volume.SetPos(m_nVolume);
	if(hAudio!=NULL){
		int nVol=m_nVolume*63;
		if(nVol>1000)
			nVol=1000;
		MCIWndSetVolume(hAudio,nVol);
	}
	DestroyMenuDlg();
}

void CMyPlayerDlg::DestroyMenuDlg()
{
  if(m_pMenuDlg!=NULL){
		m_pMenuDlg->DestroyWindow();
	   delete m_pMenuDlg;
	   m_pMenuDlg=NULL;
	}
}

void CMyPlayerDlg::OnAboutStar() 
{
	// TODO: Add your command handler code here
    DestroyMenuDlg();
	CAboutDlg  dlg;
	dlg.DoModal();
}

void CMyPlayerDlg::CreateNotifyIcon()
{
	NOTIFYICONDATA nd;
	nd.cbSize=sizeof(NOTIFYICONDATA);
	nd.hWnd=m_hWnd;
	nd.uID=IDI_ICON;
	nd.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP; 
    nd.uCallbackMessage=MYWM_NOTIFYICON; 
    nd.hIcon = m_hIcon; 
    strcpy(nd.szTip,"星空旋律");

	Shell_NotifyIcon(NIM_ADD, &nd); 
}

void CMyPlayerDlg::DeleteNotifyIcon()
{
	NOTIFYICONDATA nd;
	nd.cbSize=sizeof(NOTIFYICONDATA);
	nd.hIcon=m_hIcon;
	nd.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP;
	nd.hWnd=m_hWnd;
	nd.uCallbackMessage=MYWM_NOTIFYICON;
	nd.uID=IDI_ICON;

	Shell_NotifyIcon(NIM_DELETE,&nd);
}
void CMyPlayerDlg::OnNotifyIcon(WPARAM wParam,LPARAM lParam)
{
	if(lParam==WM_LBUTTONDOWN)
	{
		UINT MODE;
		MODE=IsWindowVisible()?SW_HIDE:SW_SHOW;
		ShowWindow(MODE);
		m_pPlayListDlg->ShowWindow(MODE);
		m_pLyricDlg->ShowWindow(MODE);
	}else if(lParam==WM_RBUTTONDOWN){
	    CPoint MousePos;
	   GetCursorPos(&MousePos);	 
    
       CMenu m_Menu,m_PlayMenu,m_VolumeMenu,m_ModeMenu,m_LyricMenu;

        m_PlayMenu.CreatePopupMenu();
       m_PlayMenu.AppendMenu(MF_STRING,IDC_MENU_PLAY,"播放");
       m_PlayMenu.AppendMenu(MF_STRING,IDC_MENU_PAUSE,"暂停");
       m_PlayMenu.AppendMenu(MF_STRING,IDC_MENU_STOP,"停止");
       m_PlayMenu.AppendMenu(MF_SEPARATOR,0,"");
       m_PlayMenu.AppendMenu(MF_STRING,IDC_MENU_PREV,"上一首");
       m_PlayMenu.AppendMenu(MF_STRING,IDC_MENU_NEXT,"下一首");
       m_PlayMenu.AppendMenu(MF_SEPARATOR,0,"");
       m_PlayMenu.AppendMenu(MF_STRING,IDC_MENU_OPEN,"打开...");

       m_VolumeMenu.CreatePopupMenu();
       m_VolumeMenu.AppendMenu(MF_STRING,IDC_MENU_VOLUP,"增大");
       m_VolumeMenu.AppendMenu(MF_STRING,IDC_MENU_VOLDOWN,"减少");
       m_VolumeMenu.AppendMenu(MF_STRING,IDC_MENU_VOLSLC,"静音");

       m_ModeMenu.CreatePopupMenu();
       m_ModeMenu.AppendMenu(MF_STRING,IDC_MENU_RAND,"随机");
       m_ModeMenu.AppendMenu(MF_STRING,IDC_MENU_SEQ,"顺序");
       m_ModeMenu.AppendMenu(MF_STRING,IDC_MENU_SINGLE,"单曲");

       m_LyricMenu.CreatePopupMenu();
       if(!m_strLyricPath.IsEmpty()){	   
    	   m_LyricMenu.AppendMenu(MF_STRING,IDC_MENU_OPEN_LYRICPATH,m_strLyricPath);
    	   m_LyricMenu.AppendMenu(MF_SEPARATOR,0,"");
	   }
      m_LyricMenu.AppendMenu(MF_STRING,IDC_SET_LYRICPATH,"设置播放歌词路径..."); 

      m_Menu.CreatePopupMenu();
      m_Menu.AppendMenu(MF_STRING,IDC_ABOUT_STAR,"星空旋律...");
      m_Menu.AppendMenu(MF_SEPARATOR,0,"");
      m_Menu.AppendMenu(MF_POPUP,(UINT)m_PlayMenu.m_hMenu,"播放控制");
      m_Menu.AppendMenu(MF_POPUP,(UINT)m_VolumeMenu.m_hMenu,"音量控制");
      m_Menu.AppendMenu(MF_POPUP,(UINT)m_ModeMenu.m_hMenu,"播放模式");
      m_Menu.AppendMenu(MF_SEPARATOR,0,"");
      m_Menu.AppendMenu(MF_POPUP,(UINT)m_LyricMenu.m_hMenu,"歌词路径");
      m_Menu.AppendMenu(MF_SEPARATOR,0,"");
      m_Menu.AppendMenu(MF_STRING,IDC_BTN_EXIT,"退出");   
	
	  SetForegroundWindow();
	  m_Menu.TrackPopupMenu(TPM_RIGHTBUTTON,\
			              MousePos.x,MousePos.y,this,NULL);
	}

}

void CMyPlayerDlg::OnBtnHide() 
{
	// TODO: Add your control notification handler code here
	ShowWindow(SW_HIDE);
	m_pPlayListDlg->ShowWindow(SW_HIDE);
	m_pLyricDlg->ShowWindow(SW_HIDE);
}

void CMyPlayerDlg::OnBtnMin() 
{
	// TODO: Add your control notification handler code here
	CloseWindow();
}

void CMyPlayerDlg::OnSetLyricpath() 
{
	// TODO: Add your command handler code here
		LPMALLOC pMalloc;
	if(SHGetMalloc(&pMalloc)==NOERROR){
		BROWSEINFO  bi;
		char szBuffer[MAX_PATH];
		LPITEMIDLIST pidl;
         
		bi.hwndOwner=GetSafeHwnd();
		bi.pidlRoot=NULL;
		bi.pszDisplayName=szBuffer;
		bi.lpszTitle=TEXT("选择你存放歌词的文件夹");
		bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
		bi.lpfn = NULL;
		bi.lParam=0;

		pidl=SHBrowseForFolder(&bi);

		if(pidl!=NULL){
			if(SHGetPathFromIDList(pidl,szBuffer))
			{
				m_strLyricPath=szBuffer;				
			}
			pMalloc->Free(pidl);
		}
		pMalloc->Release();
	}
}

void CMyPlayerDlg::OnMenuOpenLyricpath() 
{
	// TODO: Add your command handler code here
   	ShellExecute(NULL,NULL,m_strLyricPath,NULL,NULL,SW_SHOW);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -