SettingDlg.cpp
上传用户:hbrsgg1
上传日期:2014-05-08
资源大小:2826k
文件大小:4k
源码类别:

其他智力游戏

开发平台:

C/C++

  1. /*++
  2. Copyright (c) AFE(Active-Free-Elegance)
  3. Module Name:
  4.     SettingDlg.cpp
  5. Abstract:
  6. the Dialog class for user's favor configuration
  7. Author:
  8.     Weijian Luo (Arthur Luo)   15-Jun-2005
  9. E-mail: skybluehacker@yahoo.com.cn
  10. Revision History:      1.0
  11. --*/
  12. #include "stdafx.h"
  13. #include "skyblue_PinTu.h"
  14. #include "SettingDlg.h"
  15. #ifdef _DEBUG
  16. #define new DEBUG_NEW
  17. #undef THIS_FILE
  18. static char THIS_FILE[] = __FILE__;
  19. #endif
  20. /////////////////////////////////////////////////////////////////////////////
  21. // CSettingDlg dialog
  22. CSettingDlg::CSettingDlg(CWnd* pParent /*=NULL*/)
  23. : CDialog(CSettingDlg::IDD, pParent)
  24. {
  25. //{{AFX_DATA_INIT(CSettingDlg)
  26. m_bMusic = FALSE;
  27. m_iCols = 0;
  28. m_strMusicFileName = _T("");
  29. m_iRows = 0;
  30. //}}AFX_DATA_INIT
  31. }
  32. void CSettingDlg::DoDataExchange(CDataExchange* pDX)
  33. {
  34. CDialog::DoDataExchange(pDX);
  35. //{{AFX_DATA_MAP(CSettingDlg)
  36. DDX_Control(pDX, IDC_Rows, m_Crows);
  37. DDX_Control(pDX, IDC_Cols, m_Ccols);
  38. DDX_Control(pDX, IDC_SPINROWS, m_SpinRows);
  39. DDX_Control(pDX, IDC_SPINCOLS, m_SpinCols);
  40. DDX_Check(pDX, IDC_CHKMUSIC, m_bMusic);
  41. DDX_Text(pDX, IDC_Cols, m_iCols);
  42. DDV_MinMaxInt(pDX, m_iCols, 2, 10);
  43. DDX_Text(pDX, IDC_MusicFileName, m_strMusicFileName);
  44. DDX_Text(pDX, IDC_Rows, m_iRows);
  45. DDV_MinMaxInt(pDX, m_iRows, 2, 10);
  46. //}}AFX_DATA_MAP
  47. }
  48. BEGIN_MESSAGE_MAP(CSettingDlg, CDialog)
  49. //{{AFX_MSG_MAP(CSettingDlg)
  50. ON_BN_CLICKED(IDC_OPEN, OnOpen)
  51. //}}AFX_MSG_MAP
  52. END_MESSAGE_MAP()
  53. /////////////////////////////////////////////////////////////////////////////
  54. // CSettingDlg message handlers
  55. BOOL CSettingDlg::OnInitDialog() 
  56. {
  57. CDialog::OnInitDialog();
  58. // TODO: Add extra initialization here
  59. m_iCols=AfxGetApp()->GetProfileInt(_T("游戏参数"),_T("hnums"),4);
  60. m_iRows=AfxGetApp()->GetProfileInt(_T("游戏参数"),_T("vnums"),3);
  61. m_bMusic=AfxGetApp()->GetProfileInt(_T("游戏参数"),_T("musiconoff"),FALSE);
  62. m_strMusicFileName=AfxGetApp()->GetProfileString(_T("游戏参数"),_T("musicfilename"),"");
  63. m_SpinRows.SetBuddy(&m_Crows);
  64. m_SpinRows.SetRange(2,10);
  65. m_SpinRows.SetPos(m_iRows);
  66. m_SpinCols.SetBuddy(&m_Ccols);
  67. m_SpinCols.SetRange(2,10);
  68. m_SpinCols.SetPos(m_iCols);
  69. UpdateData(FALSE);
  70. return TRUE;  // return TRUE unless you set the focus to a control
  71.               // EXCEPTION: OCX Property Pages should return FALSE
  72. }
  73. void CSettingDlg::OnOK() 
  74. {
  75. // TODO: Add extra validation here
  76. UpdateData(TRUE);
  77. if(m_bMusic==TRUE)
  78. {
  79. if(m_strMusicFileName.IsEmpty())
  80. {
  81. MessageBox("你已选择了播放音乐,请指定MP3音乐文件名!","拼图游戏",MB_OK|MB_ICONINFORMATION);
  82. return;
  83. }
  84. }
  85. if(!m_strMusicFileName.IsEmpty())
  86. {
  87. if (m_strMusicFileName.Right(3)!="mp3")
  88. {
  89. MessageBox("所选文件不是MP3文件!","拼图游戏",MB_OK|MB_ICONWARNING);
  90. return;
  91. }
  92. FILE *f;
  93. f=fopen(m_strMusicFileName,"r");
  94. if(f==NULL)
  95. {
  96. MessageBox("所选文件不存在!","拼图游戏",MB_OK|MB_ICONWARNING);
  97. return;
  98. }
  99. fclose(f);
  100. }
  101. AfxGetApp()->WriteProfileInt(_T("游戏参数"),_T("hnums"),m_iCols);
  102. AfxGetApp()->WriteProfileInt(_T("游戏参数"),_T("vnums"),m_iRows);
  103. AfxGetApp()->WriteProfileInt(_T("游戏参数"),_T("musiconoff"),m_bMusic);
  104. AfxGetApp()->WriteProfileString(_T("游戏参数"),_T("musicfilename"),m_strMusicFileName);
  105. CDialog::OnOK();
  106. }
  107. void CSettingDlg::OnOpen() 
  108. {
  109. // TODO: Add your control notification handler code here
  110. CString strFilter="MP3文件(*.mp3)|*.mp3";
  111. CFileDialog fileopen(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,strFilter);
  112. if(fileopen.DoModal()==IDOK)
  113. m_strMusicFileName=fileopen.GetPathName();
  114. UpdateData(FALSE);
  115. }