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

多媒体编程

开发平台:

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. // CPPageLogo.cpp : implementation file
  22. //
  23. #include "stdafx.h"
  24. #include "mplayerc.h"
  25. #include "MainFrm.h"
  26. #include "PPageLogo.h"
  27. // CPPageLogo dialog
  28. IMPLEMENT_DYNAMIC(CPPageLogo, CPPageBase)
  29. CPPageLogo::CPPageLogo()
  30. : CPPageBase(CPPageLogo::IDD, CPPageLogo::IDD)
  31. , m_intext(0)
  32. , m_logofn(_T(""))
  33. , m_author(_T(""))
  34. {
  35. m_logoids.AddTail(IDB_LOGO0);
  36. m_logoids.AddTail(IDB_LOGO1);
  37. m_logoids.AddTail(IDB_LOGO2);
  38. m_logoids.AddTail(IDB_LOGO3);
  39. m_logoids.AddTail(IDB_LOGO4);
  40. m_logoids.AddTail(IDB_LOGO5);
  41. m_logoids.AddTail(IDB_LOGO6);
  42. m_logoids.AddTail(IDB_LOGO7);
  43. }
  44. CPPageLogo::~CPPageLogo()
  45. {
  46. }
  47. void CPPageLogo::DoDataExchange(CDataExchange* pDX)
  48. {
  49. __super::DoDataExchange(pDX);
  50. DDX_Radio(pDX, IDC_RADIO1, m_intext);
  51. DDX_Text(pDX, IDC_LOGOFILENAME, m_logofn);
  52. DDX_Control(pDX, IDC_LOGOPREVIEW, m_logopreview);
  53. DDX_Text(pDX, IDC_AUTHOR, m_author);
  54. }
  55. BEGIN_MESSAGE_MAP(CPPageLogo, CPPageBase)
  56. ON_BN_CLICKED(IDC_RADIO1, OnBnClickedRadio1)
  57. ON_BN_CLICKED(IDC_RADIO2, OnBnClickedRadio2)
  58. ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN1, OnDeltaposSpin1)
  59. ON_BN_CLICKED(IDC_BUTTON2, OnBnClickedButton2)
  60. END_MESSAGE_MAP()
  61. // CPPageLogo message handlers
  62. BOOL CPPageLogo::OnInitDialog()
  63. {
  64. __super::OnInitDialog();
  65. AppSettings& s = AfxGetAppSettings();
  66. m_intext = s.logoext?1:0;
  67. m_logofn = s.logofn;
  68. m_logoidpos = NULL;
  69. UpdateData(FALSE);
  70. for(POSITION pos = m_logoids.GetHeadPosition(); pos; m_logoids.GetNext(pos)) 
  71. {
  72. if(m_logoids.GetAt(pos) == s.logoid)
  73. {
  74. m_logoidpos = pos;
  75. break;
  76. }
  77. }
  78. if(!m_intext) OnBnClickedRadio1();
  79. else OnBnClickedRadio2();
  80. return TRUE;  // return TRUE unless you set the focus to a control
  81. // EXCEPTION: OCX Property Pages should return FALSE
  82. }
  83. BOOL CPPageLogo::OnApply()
  84. {
  85. UpdateData();
  86. AppSettings& s = AfxGetAppSettings();
  87. s.logoext = !!m_intext;
  88. s.logofn = m_logofn;
  89. s.logoid = m_logoids.GetAt(m_logoidpos);
  90. ((CMainFrame*)AfxGetMainWnd())->m_wndView.LoadLogo();
  91. return __super::OnApply();
  92. }
  93. void CPPageLogo::OnBnClickedRadio1()
  94. {
  95. ASSERT(m_logoidpos);
  96. m_author.Empty();
  97. m_logobm.Destroy();
  98. UINT id = m_logoids.GetAt(m_logoidpos);
  99. if(IDB_LOGO0 != id)
  100. {
  101. m_logobm.LoadFromResource(::AfxGetInstanceHandle(), id);
  102. if(!m_author.LoadString(id))
  103. m_author = _T("Author unknown. Contact me if you made this logo!");
  104. }
  105. m_logopreview.SetBitmap(m_logobm);
  106. Invalidate();
  107. m_intext = 0;
  108. UpdateData(FALSE);
  109. SetModified();
  110. }
  111. void CPPageLogo::OnBnClickedRadio2()
  112. {
  113. UpdateData();
  114. m_author.Empty();
  115. m_logobm.Destroy();
  116. if(AfxGetAppSettings().fXpOrBetter)
  117. m_logobm.Load(m_logofn);
  118. else if(HANDLE h = LoadImage(NULL, m_logofn, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE))
  119. m_logobm.Attach((HBITMAP)h);
  120. m_logopreview.SetBitmap(m_logobm);
  121. Invalidate();
  122. m_intext = 1;
  123. UpdateData(FALSE);
  124. SetModified();
  125. }
  126. void CPPageLogo::OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult)
  127. {
  128. LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
  129. if(pNMUpDown->iDelta < 0)
  130. {
  131. m_logoids.GetNext(m_logoidpos);
  132. if(!m_logoidpos) m_logoidpos = m_logoids.GetHeadPosition();
  133. }
  134. else
  135. {
  136. m_logoids.GetPrev(m_logoidpos);
  137. if(!m_logoidpos) m_logoidpos = m_logoids.GetTailPosition();
  138. }
  139. OnBnClickedRadio1();
  140. *pResult = 0;
  141. }
  142. void CPPageLogo::OnBnClickedButton2()
  143. {
  144. CFileDialog dlg(TRUE, NULL, m_logofn, 
  145. OFN_EXPLORER|OFN_ENABLESIZING|OFN_HIDEREADONLY, 
  146. AfxGetAppSettings().fXpOrBetter 
  147. ? _T("Images (*.bmp;*.jpg;*.gif;*.png)|*.bmp;*.jpg;*.gif;*.png|All files (*.*)|*.*||")
  148. : _T("Images (*.bmp)|*.bmp|All files (*.*)|*.*||")
  149. , this, 0);
  150. if(dlg.DoModal() == IDOK)
  151. {
  152. m_logofn = dlg.GetPathName();
  153. UpdateData(FALSE);
  154. OnBnClickedRadio2();
  155. }
  156. }