📄 simpleplayerdlg.cpp
字号:
TCHAR szPosition[64], szCurrentString[64];
wsprintf(szPosition, _T("%02d:%02d\0"), nMinutes, nSeconds);
// Read current string and compare to the new string. To prevent flicker,
// don't update this label unless the string has changed.
m_StrPosition.GetWindowText(szCurrentString, 24);
if (_tcscmp(szCurrentString, szPosition))
m_StrPosition.SetWindowText(szPosition);
}
int aflag=1;
void CSimplePlayerDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CDC memDC;
CBitmap bmBkgnd;
bmBkgnd.Attach( m_hBmBkgnd );
memDC.CreateCompatibleDC(&dc);
CBitmap *pOldBm = memDC.SelectObject( &bmBkgnd );
BITMAP bm;
bmBkgnd.GetObject(sizeof(bm), &bm);
dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &memDC, 0, 0, SRCCOPY );
memDC.SelectObject( pOldBm );
bmBkgnd.Detach();
if(first_in_volume==1)
{
waveOutGetVolume(0,&AudiuAmpFactor);
nowshow=(int)(AudiuAmpFactor >> 12) & 0x000f;
m_SliderVolume.SetPos(nowshow);
m_SliderVolume.SetSelection(0, nowshow);
m_SliderVolume.SetSelectionColor(RGB(85, 145, 225));
first_in_volume=0;
}
if(aflag==1)
{
aflag=0;
GetDlgItem(IDC_VIDEO_WINDOW)->ShowWindow(SW_HIDE);
if((rflag=fnFileViewer_Invoke(GetDlgItem(IDD_SIMPLEPLAYER_DIALOG)))==1)
{
unsigned short *pFilePath = fnFileViewer_GetCurFilePath();
unsigned short *pFileName = fnFileViewer_GetCurFileName();
FileName1=pFileName;
m_text.SetWindowText(FileName1);
wcscpy(FilePath1.GetBuffer(128),pFilePath);
CSimplePlayerDlg::CreateGraph(FilePath1);
GetDlgItem(IDC_VIDEO_WINDOW)->EnableWindow(TRUE);
DisplayFileDuration();
len=FileName1.GetLength();
m_nCount=len;
if(len>=9)
{
CString pp=L" ";
pp=pp+FileName1;
FileName1=pp;
len=FileName1.GetLength();
m_RollTimer=SetTimer(ROLL_TIMER, 300, NULL);
}
else
{
m_text.SetWindowText(FileName1);
}
ButtonPlayPause.LoadBitmaps(IDB_PAUSE1,IDB_PAUSE0);
ButtonPlayPause.RedrawWindow();
ButtonStop.LoadBitmaps(IDB_STOP1,IDB_STOP0);
ButtonStop.RedrawWindow();
ButtonPreview.LoadBitmaps(IDB_PREVIEW1,IDB_PREVIEW0);
ButtonPreview.RedrawWindow();
ButtonNext.LoadBitmaps(IDB_NEXT1,IDB_NEXT0);
ButtonNext.RedrawWindow();
((CButton*)GetDlgItem(ID_BUTTON_OPEN))->EnableWindow(true);
((CButton*)GetDlgItem(ID_BUTTON_STOP))->EnableWindow(true);
((CButton*)GetDlgItem(ID_BUTTON_PLAY))->EnableWindow(true);
((CButton*)GetDlgItem(ID_BUTTON_PREVIEW))->EnableWindow(true);
((CButton*)GetDlgItem(ID_BUTTON_NEXT))->EnableWindow(true);
m_flag1=false;
m_FilterGraph->Run();
if (m_SliderTimer == 0)
{
m_SliderTimer = SetTimer(SLIDER_TIMER, 100, NULL);
}
}
else
{
if(rflag==-1)
SetControlEnable(false);
else
ExitProcess(0);
}
}
if(value==1)
{
if( FilePath1==L"")
{
if(rflag==1)
{
m_SliderVolume.RedrawWindow();
GetDlgItem(IDC_VOL)->RedrawWindow();
GetDlgItem(IDC_VOLBOT)->RedrawWindow();
SetControlEnable(true);
}
}
else
{
if(m_FilterGraph->IsPaused())
{
if(m_FilterGraph->GetFullScreen()==0)
{
ButtonPlayPause.LoadBitmaps(IDB_PLAY1,IDB_PLAY0);
ButtonPlayPause.RedrawWindow();
ButtonOpen.LoadBitmaps(IDB_OPEN1,IDB_OPEN0);
ButtonOpen.RedrawWindow();
m_SliderVolume.RedrawWindow();
GetDlgItem(IDC_VOL)->RedrawWindow();
GetDlgItem(IDC_VOLBOT)->RedrawWindow();
ButtonPreview.LoadBitmaps(IDB_PREVIEW1,IDB_PREVIEW0);
ButtonPreview.RedrawWindow();
ButtonStop.LoadBitmaps(IDB_STOP1,IDB_STOP0);
ButtonStop.RedrawWindow();
ButtonNext.LoadBitmaps(IDB_NEXT1,IDB_NEXT0);
ButtonNext.RedrawWindow();
}
}
else
{
ButtonPlayPause.LoadBitmaps(IDB_PAUSE1,IDB_PAUSE0);
ButtonPlayPause.RedrawWindow();
ButtonOpen.LoadBitmaps(IDB_OPEN1,IDB_OPEN0);
ButtonOpen.RedrawWindow();
m_SliderVolume.RedrawWindow();
GetDlgItem(IDC_VOL)->RedrawWindow();
GetDlgItem(IDC_VOLBOT)->RedrawWindow();
ButtonPreview.LoadBitmaps(IDB_PREVIEW1,IDB_PREVIEW0);
ButtonPreview.RedrawWindow();
ButtonStop.LoadBitmaps(IDB_STOP1,IDB_STOP0);
ButtonStop.RedrawWindow();
ButtonNext.LoadBitmaps(IDB_NEXT1,IDB_NEXT0);
ButtonNext.RedrawWindow();
}
}
}
else
{
GetDlgItem(IDC_VIDEO_WINDOW)->ShowWindow(SW_HIDE);
SetControlEnable(false);
m_SliderVolume.RedrawWindow();
GetDlgItem(IDC_VOL)->RedrawWindow();
GetDlgItem(IDC_VOLBOT)->RedrawWindow();
}
// Do not call CDialog::OnPaint() for painting messages
}
LRESULT CSimplePlayerDlg::OnCtlColorStatic(WPARAM wParam, LPARAM lParam)
{
HDC hDCStatic = (HDC) wParam;
HWND hWndCtrl = (HWND) lParam;
UINT nID = ::GetDlgCtrlID( hWndCtrl );
::SetBkMode( hDCStatic, TRANSPARENT );
::SetTextColor(hDCStatic,RGB(255,255,255));
switch( nID )
{
case IDC_TEXT: return (LRESULT)m_hBrCtl[0];
case IDC_STATIC_POSITION: return (LRESULT)m_hBrCtl[1];
case IDC_STATIC_DURATION: return (LRESULT)m_hBrCtl[2];
case IDC_SLIDER_GRAPH: return (LRESULT)m_hBrCtl[3];
case IDC_SLIDER_VOLUME: return (LRESULT)m_hBrCtl[4];
}
return 0;
}
LRESULT CSimplePlayerDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
if(message == 0x00000219)
{
switch(wParam)
{
case 0x00008000:
{
value =1;
rflag=1;
SetControlEnable(value);
fnFileViewer_ExternMemory_RefreshFlag_Set();
break;
}
case 0x00008004:
{
value =0;
rflag=0;
card=1;
SetControlEnable(value);
GetDlgItem(IDC_VIDEO_WINDOW)->ShowWindow(SW_HIDE);
m_StrPosition.SetWindowText(L"00:00 ");
m_SliderGraph.SetPos(0);
break;
}
default:
AfxMessageBox(L"Lost!");
}
}
return CDialog::WindowProc(message, wParam, lParam);
}
void CSimplePlayerDlg::SetControlEnable(bool aValue)
{
if(aValue == 1)
{
ButtonPlayPause.LoadBitmaps(IDB_PLAY2,IDB_PLAY2);
ButtonOpen.LoadBitmaps(IDB_OPEN1,IDB_OPEN0);
ButtonStop.LoadBitmaps(IDB_STOP2,IDB_STOP2);
ButtonPreview.LoadBitmaps(IDB_PREVIEW2,IDB_PREVIEW2);
ButtonNext.LoadBitmaps(IDB_NEXT2,IDB_NEXT2);
ButtonPlayPause.RedrawWindow();
ButtonOpen.RedrawWindow();
ButtonStop.RedrawWindow();
ButtonPreview.RedrawWindow();
ButtonNext.RedrawWindow();
((CButton*)GetDlgItem(ID_BUTTON_OPEN))->EnableWindow(aValue);
((CButton*)GetDlgItem(ID_BUTTON_PLAY))->EnableWindow(0);
((CButton*)GetDlgItem(ID_BUTTON_STOP))->EnableWindow(0);
((CButton*)GetDlgItem(ID_BUTTON_PREVIEW))->EnableWindow(0);
((CButton*)GetDlgItem(ID_BUTTON_NEXT))->EnableWindow(0);
GetDlgItem(IDC_VIDEO_WINDOW)->ShowWindow(SW_HIDE);
FileName1=L"VIDEO NAME";
FilePath1=L"";
GetDlgItem(IDC_VIDEO_WINDOW)->ShowWindow(SW_HIDE);
PROCESS5=GetDlgItem(IDC_ENDPRO)->GetSafeHwnd();
::SetFocus(PROCESS5);
m_SliderGraph.SetPos(0);
m_SliderGraph.SetSelection(0, 0);
m_SliderGraph.SetSelectionColor(RGB(85, 145, 225));
m_SliderGraph.SetChannelColor(RGB(163,193,233));
return ;
}
if(aValue == 0)
{
ButtonPlayPause.LoadBitmaps(IDB_PLAY2,IDB_PLAY2);
ButtonOpen.LoadBitmaps(IDB_OPEN2,IDB_OPEN2);
ButtonPreview.LoadBitmaps(IDB_PREVIEW2,IDB_PREVIEW2);
ButtonStop.LoadBitmaps(IDB_STOP2,IDB_STOP2);
ButtonNext.LoadBitmaps(IDB_NEXT2,IDB_NEXT2);
ButtonPlayPause.RedrawWindow();
ButtonOpen.RedrawWindow();
ButtonPreview.RedrawWindow();
ButtonStop.RedrawWindow();
ButtonNext.RedrawWindow();
((CButton*)GetDlgItem(ID_BUTTON_PLAY))->EnableWindow(aValue);
((CButton*)GetDlgItem(ID_BUTTON_OPEN))->EnableWindow(aValue);
((CButton*)GetDlgItem(ID_BUTTON_PREVIEW))->EnableWindow(aValue);
((CButton*)GetDlgItem(ID_BUTTON_STOP))->EnableWindow(aValue);
((CButton*)GetDlgItem(ID_BUTTON_NEXT))->EnableWindow(aValue);
GetDlgItem(IDC_VIDEO_WINDOW)->ShowWindow(SW_HIDE);
m_text.SetWindowText(L"VIDEO NAME");
m_StrDuration.SetWindowText(L" / 00:00");
m_ptext=L"VIDEO NAME";
FileName1=L"VIDEO NAME";
KillTimer(m_RollTimer);
FilePath1=L"";
GetDlgItem(IDC_VIDEO_WINDOW)->ShowWindow(SW_HIDE);
PROCESS5=GetDlgItem(IDC_ENDPRO)->GetSafeHwnd();
::SetFocus(PROCESS5);
m_SliderGraph.SetPos(0);
m_SliderGraph.SetSelection(0, 0);
m_SliderGraph.SetSelectionColor(RGB(85, 145, 225));
m_SliderGraph.SetChannelColor(RGB(163,193,233));
return ;
}
}
BOOL CSimplePlayerDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message==WM_KEYDOWN )//&& pMsg->wParam==VK_RETURN
{
switch(pMsg->wParam)
{
case VK_ADD:
{
first_in_volume=1;
if(value==1)
{
if(FilePath1==L"")
{
if(rflag==1)
SetControlEnable(true);
}
else
{
if(m_FilterGraph->IsPaused())
{
if(m_FilterGraph->GetFullScreen())
{
m_FilterGraph->SetFullScreen(FALSE);
m_FilterGraph->SetDisplayWindow(m_VideoWindow.GetSafeHwnd());
m_FilterGraph->SetNotifyWindow(this->GetSafeHwnd());
}
}
if(m_FilterGraph->GetFullScreen())
{
m_FilterGraph->Pause();
m_FilterGraph->SetFullScreen(FALSE);
m_FilterGraph->SetDisplayWindow(m_VideoWindow.GetSafeHwnd());
m_FilterGraph->SetNotifyWindow(this->GetSafeHwnd());
m_FilterGraph->Run();
}
}
PROCESS5=GetSafeHwnd();
::ShowWindow(PROCESS5,SW_HIDE);
}
else
{
PROCESS5=GetSafeHwnd();
::ShowWindow(PROCESS5,SW_HIDE);
}
break;
}
case VK_VOLUME_DOWN:
{
if(nowshow>0)
{
nowshow--;
m_SliderVolume.SetPos(nowshow);
m_FilterGraph->SetAudioVol(nowshow*4369);
SaveVolume();
m_SliderVolume.SetSelection(0, nowshow);
m_SliderVolume.SetSelectionColor(RGB(85, 145, 225));
}
break;
}
case VK_VOLUME_UP:
{
if(nowshow<15)
{
nowshow++;
m_SliderVolume.SetPos(nowshow);
m_FilterGraph->SetAudioVol(nowshow*4369);
SaveVolume();
m_SliderVolume.SetSelection(0, nowshow);
m_SliderVolume.SetSelectionColor(RGB(85, 145, 225));
}
break;
}
}
}
return CDialog::PreTranslateMessage(pMsg);
}
void CSimplePlayerDlg::OnDestroy()
{
CDialog::OnDestroy();
// TODO: Add your message handler code here
// Clean Up..
::DeleteObject( m_hBmBkgnd );
::DeleteObject( m_hBrCtl[0] );
::DeleteObject( m_hBrCtl[1] );
::DeleteObject( m_hBrCtl[2] );
::DeleteObject( m_hBrCtl[3] );
::DeleteObject( m_hBrCtl[4] );
}
void CSimplePlayerDlg::OnEndpro()
{
// TODO: Add your control notification handler code here
FreeLibrary(hdll);
ExitProcess(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -