PPagePlayback.cpp
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:6k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /* 
  2.  * Copyright (C) 2003-2005 Gabest
  3.  * http://www.gabest.org
  4.  *
  5.  *  This Program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2, or (at your option)
  8.  *  any later version.
  9.  *   
  10.  *  This Program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13.  *  GNU General Public License for more details.
  14.  *   
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with GNU Make; see the file COPYING.  If not, write to
  17.  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
  18.  *  http://www.gnu.org/copyleft/gpl.html
  19.  *
  20.  */
  21. // PPagePlayback.cpp : implementation file
  22. //
  23. #include "stdafx.h"
  24. #include "mplayerc.h"
  25. #include "MainFrm.h"
  26. #include "PPagePlayback.h"
  27. // CPPagePlayback dialog
  28. IMPLEMENT_DYNAMIC(CPPagePlayback, CPPageBase)
  29. CPPagePlayback::CPPagePlayback()
  30. : CPPageBase(CPPagePlayback::IDD, CPPagePlayback::IDD)
  31. , m_iLoopForever(0)
  32. , m_nLoops(0)
  33. , m_fRewind(FALSE)
  34. , m_iZoomLevel(0)
  35. , m_iRememberZoomLevel(FALSE)
  36. , m_fSetFullscreenRes(FALSE)
  37. , m_nVolume(0)
  38. , m_nBalance(0)
  39. , m_fAutoloadAudio(FALSE)
  40. , m_fAutoloadSubtitles(FALSE)
  41. , m_fEnableWorkerThreadForOpening(FALSE)
  42. , m_fReportFailedPins(FALSE)
  43. {
  44. }
  45. CPPagePlayback::~CPPagePlayback()
  46. {
  47. }
  48. void CPPagePlayback::DoDataExchange(CDataExchange* pDX)
  49. {
  50. __super::DoDataExchange(pDX);
  51. DDX_Control(pDX, IDC_SLIDER2, m_volumectrl);
  52. DDX_Control(pDX, IDC_SLIDER3, m_balancectrl);
  53. DDX_Slider(pDX, IDC_SLIDER2, m_nVolume);
  54. DDX_Slider(pDX, IDC_SLIDER3, m_nBalance);
  55. DDX_Radio(pDX, IDC_RADIO1, m_iLoopForever);
  56. DDX_Control(pDX, IDC_EDIT1, m_loopnumctrl);
  57. DDX_Text(pDX, IDC_EDIT1, m_nLoops);
  58. DDX_Check(pDX, IDC_CHECK1, m_fRewind);
  59. DDX_CBIndex(pDX, IDC_COMBO1, m_iZoomLevel);
  60. DDX_Check(pDX, IDC_CHECK5, m_iRememberZoomLevel);
  61. DDX_Check(pDX, IDC_CHECK4, m_fSetFullscreenRes);
  62. DDX_Control(pDX, IDC_COMBO2, m_dispmodecombo);
  63. DDX_Check(pDX, IDC_CHECK2, m_fAutoloadAudio);
  64. DDX_Check(pDX, IDC_CHECK3, m_fAutoloadSubtitles);
  65. DDX_Check(pDX, IDC_CHECK9, m_fEnableWorkerThreadForOpening);
  66. DDX_Check(pDX, IDC_CHECK6, m_fReportFailedPins);
  67. }
  68. BEGIN_MESSAGE_MAP(CPPagePlayback, CPPageBase)
  69. ON_WM_HSCROLL()
  70. ON_CONTROL_RANGE(BN_CLICKED, IDC_RADIO1, IDC_RADIO2, OnBnClickedRadio12)
  71. ON_UPDATE_COMMAND_UI(IDC_EDIT1, OnUpdateLoopNum)
  72. ON_UPDATE_COMMAND_UI(IDC_STATIC1, OnUpdateLoopNum)
  73. ON_UPDATE_COMMAND_UI(IDC_COMBO1, OnUpdateAutoZoomCombo)
  74. ON_UPDATE_COMMAND_UI(IDC_COMBO2, OnUpdateDispModeCombo)
  75. END_MESSAGE_MAP()
  76. // CPPagePlayback message handlers
  77. BOOL CPPagePlayback::OnInitDialog()
  78. {
  79. __super::OnInitDialog();
  80. AppSettings& s = AfxGetAppSettings();
  81. m_volumectrl.SetRange(1, 100);
  82. m_volumectrl.SetTicFreq(10);
  83. m_balancectrl.SetRange(0, 200);
  84. m_balancectrl.SetTicFreq(20);
  85. m_nVolume = s.nVolume;
  86. m_nBalance = s.nBalance+100;
  87. m_iLoopForever = s.fLoopForever?1:0;
  88. m_nLoops = s.nLoops;
  89. m_fRewind = s.fRewind;
  90. m_iZoomLevel = s.iZoomLevel;
  91. m_iRememberZoomLevel = s.fRememberZoomLevel;
  92. m_fSetFullscreenRes = s.dmFullscreenRes.fValid;
  93. int iSel = -1;
  94. dispmode dm, dmtoset = s.dmFullscreenRes;
  95. if(!dmtoset.fValid) GetCurDispMode(dmtoset);
  96. for(int i = 0, j = 0; GetDispMode(i, dm); i++)
  97. {
  98. if(dm.bpp <= 8) continue;
  99. m_dms.Add(dm);
  100. CString str;
  101. str.Format(_T("%dx%d %dbpp %dHz"), dm.size.cx, dm.size.cy, dm.bpp, dm.freq);
  102. m_dispmodecombo.AddString(str);
  103. if(iSel < 0 && dmtoset.fValid && dm.size == dmtoset.size
  104. && dm.bpp == dmtoset.bpp && dm.freq == dmtoset.freq)
  105. iSel = j;
  106. j++;
  107. }
  108. m_dispmodecombo.SetCurSel(iSel);
  109. m_fAutoloadAudio = s.fAutoloadAudio;
  110. m_fAutoloadSubtitles = s.fAutoloadSubtitles;
  111. m_fEnableWorkerThreadForOpening = s.fEnableWorkerThreadForOpening;
  112. m_fReportFailedPins = s.fReportFailedPins;
  113. UpdateData(FALSE);
  114. return TRUE;  // return TRUE unless you set the focus to a control
  115. // EXCEPTION: OCX Property Pages should return FALSE
  116. }
  117. BOOL CPPagePlayback::OnApply()
  118. {
  119. UpdateData();
  120. AppSettings& s = AfxGetAppSettings();
  121. s.nVolume = m_nVolume;
  122. s.nBalance = m_nBalance-100;
  123. s.fLoopForever = !!m_iLoopForever;
  124. s.nLoops = m_nLoops;
  125. s.fRewind = !!m_fRewind;
  126. s.iZoomLevel = m_iZoomLevel;
  127. s.fRememberZoomLevel = !!m_iRememberZoomLevel;
  128. int iSel = m_dispmodecombo.GetCurSel();
  129. if((s.dmFullscreenRes.fValid = !!m_fSetFullscreenRes) && iSel >= 0 && iSel < m_dms.GetCount())
  130. s.dmFullscreenRes = m_dms[m_dispmodecombo.GetCurSel()];
  131. s.fAutoloadAudio = !!m_fAutoloadAudio;
  132. s.fAutoloadSubtitles = !!m_fAutoloadSubtitles;
  133. s.fEnableWorkerThreadForOpening = !!m_fEnableWorkerThreadForOpening;
  134. s.fReportFailedPins = !!m_fReportFailedPins;
  135. return __super::OnApply();
  136. }
  137. LRESULT CPPagePlayback::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
  138. {
  139. if(message == WM_HSCROLL || message == WM_VSCROLL)
  140. {
  141. SetModified();
  142. }
  143. return __super::DefWindowProc(message, wParam, lParam);
  144. }
  145. void CPPagePlayback::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
  146. {
  147. if(*pScrollBar == m_volumectrl)
  148. {
  149. UpdateData();
  150. ((CMainFrame*)GetParentFrame())->m_wndToolBar.Volume = m_nVolume; // nice shortcut...
  151. }
  152. else if(*pScrollBar == m_balancectrl)
  153. {
  154. UpdateData();
  155. ((CMainFrame*)GetParentFrame())->SetBalance(m_nBalance-100); // see prev note...
  156. }
  157. SetModified();
  158. __super::OnHScroll(nSBCode, nPos, pScrollBar);
  159. }
  160. void CPPagePlayback::OnBnClickedRadio12(UINT nID)
  161. {
  162. SetModified();
  163. }
  164. void CPPagePlayback::OnUpdateLoopNum(CCmdUI* pCmdUI)
  165. {
  166. pCmdUI->Enable(!!IsDlgButtonChecked(IDC_RADIO1));
  167. }
  168. void CPPagePlayback::OnUpdateAutoZoomCombo(CCmdUI* pCmdUI)
  169. {
  170. pCmdUI->Enable(!!IsDlgButtonChecked(IDC_CHECK5));
  171. }
  172. void CPPagePlayback::OnUpdateDispModeCombo(CCmdUI* pCmdUI)
  173. {
  174. pCmdUI->Enable(!!IsDlgButtonChecked(IDC_CHECK4));
  175. }