📄 myplayerdlg.cpp
字号:
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 + -