SetPrpt.cpp
上传用户:zhanglf88
上传日期:2013-11-19
资源大小:6036k
文件大小:7k
源码类别:

金融证券系统

开发平台:

Visual C++

  1. // SetPrpt.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "SetPrpt.h"
  5. #include <io.h>
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CSetPrpt property page
  13. IMPLEMENT_DYNCREATE(CSetPrpt, CPropertyPageEx)
  14. CSetPrpt::CSetPrpt( ) : CPropertyPageEx(CSetPrpt::IDD)
  15. {
  16. //{{AFX_DATA_INIT(CSetPrpt)
  17. m_strName = _T("");
  18. m_strPathName = _T("");
  19. m_strDescript = _T("");
  20. //}}AFX_DATA_INIT
  21. m_bAutoChangeTitle = TRUE;
  22. m_bAutoChangePath = TRUE;
  23. m_pStrategy = NULL;
  24. m_dwButtonFlags = PSWIZB_BACK | PSWIZB_NEXT;
  25. }
  26. CSetPrpt::CSetPrpt( UINT nIDCaption, UINT nIDTitle, UINT nIDSubTitle )
  27.  : CPropertyPageEx(CSetPrpt::IDD,nIDCaption, nIDTitle, nIDSubTitle)
  28. {
  29. m_strName = _T("");
  30. m_strPathName = _T("");
  31. m_strDescript = _T("");
  32. m_bAutoChangeTitle = TRUE;
  33. m_bAutoChangePath = TRUE;
  34. m_pStrategy = NULL;
  35. m_dwButtonFlags = PSWIZB_BACK | PSWIZB_NEXT;
  36. }
  37. CSetPrpt::~CSetPrpt()
  38. {
  39. }
  40. void CSetPrpt::SetStrategy( CStrategy * pStrategy )
  41. {
  42. m_pStrategy = pStrategy;
  43. }
  44. void CSetPrpt::SetName( LPCTSTR lpszName )
  45. {
  46. m_strName = lpszName;
  47. m_bAutoChangeTitle = FALSE;
  48. m_bAutoChangePath = FALSE;
  49. }
  50. CString CSetPrpt::GetName( )
  51. {
  52. return m_strName;
  53. }
  54. void CSetPrpt::SetDescript( LPCTSTR lpszDescript )
  55. {
  56. m_strDescript = lpszDescript;
  57. }
  58. CString CSetPrpt::GetDescript( )
  59. {
  60. return m_strDescript;
  61. }
  62. void CSetPrpt::SetPathName( LPCTSTR lpszPathName )
  63. {
  64. m_strPathName = lpszPathName;
  65. m_bAutoChangeTitle = FALSE;
  66. m_bAutoChangePath = FALSE;
  67. }
  68. CString CSetPrpt::GetPathName( )
  69. {
  70. return m_strPathName;
  71. }
  72. CString CSetPrpt::GetPathName( CString strDirName, CString strTitle, CString strFileExt )
  73. {
  74. int nLen = strDirName.GetLength();
  75. if( nLen > 0 &&
  76. ( strDirName[nLen-1] == '\' || strDirName[nLen-1] == '/' ) )
  77. strDirName = strDirName.Left( strDirName.GetLength()-1 );
  78. return strDirName + STRING_DIRSEP + strTitle + strFileExt;
  79. }
  80. BOOL CSetPrpt::ValidData( )
  81. {
  82. if( m_strName.IsEmpty() )
  83. {
  84. AfxMessageBox( IDS_SETPRPT_INVALIDTITLE, MB_OK | MB_ICONINFORMATION );
  85. return FALSE;
  86. }
  87. CString strDirName = AfxGetFileDirectoryExist( m_strPathName, "" );
  88. if( m_strPathName.IsEmpty() || 
  89. (!strDirName.IsEmpty() && 0 != access(strDirName, 0)) )
  90. {
  91. AfxMessageBox( IDS_SETPRPT_INVALIDPATH, MB_OK | MB_ICONINFORMATION );
  92. return FALSE;
  93. }
  94. return TRUE;
  95. }
  96. BOOL CSetPrpt::LoadFromStrategy( )
  97. {
  98. if( m_pStrategy )
  99. {
  100. SetName( m_pStrategy->GetName() );
  101. SetDescript( m_pStrategy->GetDescript() );
  102. SetPathName( m_pStrategy->GetPathName() );
  103. return TRUE;
  104. }
  105. return FALSE;
  106. }
  107. BOOL CSetPrpt::StoreToStrategy( )
  108. {
  109. if( m_pStrategy )
  110. {
  111. m_pStrategy->SetName( GetName() );
  112. m_pStrategy->SetDescript( GetDescript() );
  113. m_pStrategy->SetPathName( GetPathName() );
  114. return TRUE;
  115. }
  116. return FALSE;
  117. }
  118. void CSetPrpt::DoDataExchange(CDataExchange* pDX)
  119. {
  120. CPropertyPageEx::DoDataExchange(pDX);
  121. //{{AFX_DATA_MAP(CSetPrpt)
  122. DDX_Control(pDX, IDC_EXPLORE, m_btnExplore);
  123. DDX_Control(pDX, IDC_DESCRIPT, m_editDescript);
  124. DDX_Text(pDX, IDC_TITLE, m_strName);
  125. DDV_MaxChars(pDX, m_strName, STRATEGY_MAX_TITLE);
  126. DDX_Text(pDX, IDC_FILENAME, m_strPathName);
  127. DDX_Text(pDX, IDC_DESCRIPT, m_strDescript);
  128. //}}AFX_DATA_MAP
  129. }
  130. BEGIN_MESSAGE_MAP(CSetPrpt, CPropertyPageEx)
  131. //{{AFX_MSG_MAP(CSetPrpt)
  132. ON_BN_CLICKED(IDC_EXPLORE, OnExplore)
  133. ON_EN_CHANGE(IDC_TITLE, OnChangeTitle)
  134. //}}AFX_MSG_MAP
  135. END_MESSAGE_MAP()
  136. /////////////////////////////////////////////////////////////////////////////
  137. // CSetPrpt message handlers
  138. BOOL CSetPrpt::OnInitDialog() 
  139. {
  140. CPropertyPageEx::OnInitDialog();
  141. ASSERT( m_pStrategy );
  142. LoadFromStrategy( );
  143. CStkUIApp * pApp = AfxGetStkUIApp();
  144. if( pApp && m_strName.IsEmpty() && m_strPathName.IsEmpty() )
  145. {
  146. CString strDirName = pApp->GetLastStrategyDirectory( );
  147. m_strName = pApp->GetNextNewStrategyTitle( m_strFileExt, strDirName );
  148. m_strPathName = GetPathName( strDirName, m_strName, m_strFileExt );
  149. if( m_strName.IsEmpty() )
  150. m_strName.LoadString( IDS_STRATEGY_NONAME );
  151. if( m_strPathName.IsEmpty() )
  152. m_strPathName = m_strName + m_strFileExt;
  153. }
  154. UpdateData( FALSE );
  155. return TRUE;  // return TRUE unless you set the focus to a control
  156.               // EXCEPTION: OCX Property Pages should return FALSE
  157. }
  158. BOOL CSetPrpt::OnKillActive() 
  159. {
  160. // TODO: Add your specialized code here and/or call the base class
  161. UpdateData( );
  162. if( !ValidData( ) )
  163. return FALSE;
  164. StoreToStrategy( );
  165. return CPropertyPageEx::OnKillActive();
  166. }
  167. LRESULT CSetPrpt::OnWizardBack() 
  168. {
  169. // TODO: Add your specialized code here and/or call the base class
  170. UpdateData( );
  171. if( !ValidData( ) )
  172. return -1L;
  173. StoreToStrategy( );
  174. return CPropertyPageEx::OnWizardBack();
  175. }
  176. LRESULT CSetPrpt::OnWizardNext() 
  177. {
  178. // TODO: Add your specialized code here and/or call the base class
  179. UpdateData( );
  180. if( !ValidData( ) )
  181. return -1L;
  182. StoreToStrategy( );
  183. return CPropertyPageEx::OnWizardNext();
  184. }
  185. BOOL CSetPrpt::OnWizardFinish() 
  186. {
  187. // Add your specialized code here and/or call the base class
  188. UpdateData( );
  189. if( !ValidData( ) )
  190. return FALSE;
  191. StoreToStrategy( );
  192. return CPropertyPageEx::OnWizardFinish();
  193. }
  194. void CSetPrpt::OnOK() 
  195. {
  196. // TODO: Add your specialized code here and/or call the base class
  197. UpdateData( );
  198. if( !ValidData( ) )
  199. return;
  200. StoreToStrategy( );
  201. CPropertyPageEx::OnOK();
  202. }
  203. void CSetPrpt::OnExplore() 
  204. {
  205. // TODO: Add your control notification handler code here
  206. UpdateData( TRUE );
  207. if( AfxDoPromptFileName( m_strPathName, IDS_OPENFILE,
  208. OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_EXPLORER | OFN_ENABLESIZING, FALSE ) )
  209. {
  210. CString strTitle = AfxGetFileTitleNoExt( m_strPathName );
  211. if( m_strName.IsEmpty() || m_bAutoChangeTitle )
  212. m_strName = strTitle;
  213. if( m_strName.IsEmpty() )
  214. m_strName.LoadString( IDS_STRATEGY_NONAME );
  215. UpdateData( FALSE );
  216. DWORD dwAttrib = GetFileAttributes(m_strPathName);
  217. if (dwAttrib & FILE_ATTRIBUTE_READONLY)
  218. {
  219. CFile file;
  220. if( file.Open( m_strPathName, CFile::modeCreate ) )
  221. file.Close();
  222. }
  223. m_bAutoChangePath = FALSE;
  224. }
  225. }
  226. void CSetPrpt::OnChangeTitle() 
  227. {
  228. // TODO: If this is a RICHEDIT control, the control will not
  229. // send this notification unless you override the CPropertyPageEx::OnInitDialog()
  230. // function and call CRichEditCtrl().SetEventMask()
  231. // with the ENM_CHANGE flag ORed into the mask.
  232. UpdateData( );
  233. if( m_bAutoChangePath && !m_strName.IsEmpty() )
  234. {
  235. CString strDirName = AfxGetFileDirectoryExist( m_strPathName, "" );
  236. m_strPathName = GetPathName( strDirName, m_strName, m_strFileExt );
  237. }
  238. UpdateData( FALSE );
  239. m_bAutoChangeTitle = FALSE;
  240. }
  241. BOOL CSetPrpt::PreTranslateMessage(MSG* pMsg) 
  242. {
  243. // TODO: Add your specialized code here and/or call the base class
  244. if( WM_KEYDOWN == pMsg->message && VK_RETURN == pMsg->wParam 
  245. && pMsg->hwnd != m_editDescript.GetSafeHwnd() )
  246. return TRUE;
  247. return CPropertyPageEx::PreTranslateMessage(pMsg);
  248. }
  249. BOOL CSetPrpt::OnSetActive() 
  250. {
  251. // TODO: Add your specialized code here and/or call the base class
  252. CPropertySheetEx * pSheet = DYNAMIC_DOWNCAST( CPropertySheetEx, GetParent() );
  253. if( pSheet )
  254. {
  255. pSheet->SetWizardButtons( m_dwButtonFlags );
  256. }
  257. return CPropertyPageEx::OnSetActive();
  258. }