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

金融证券系统

开发平台:

Visual C++

  1. // AfxCore.inl : implementation file
  2. //
  3. /////////////////////////////////////////////////////////////////////////////
  4. // AfxCore
  5. // Assert Valid Functions
  6. _AFXCORE_INLINE void AfxAssertNull( )
  7. {
  8. CStockInfo infoTemp, info;
  9. CMathParser parser;
  10. parser.Parse( );
  11. }
  12. _AFXCORE_INLINE BOOL AfxAssertValid( )
  13. {
  14. BOOL b = AfxGetSView().AssertValid();
  15. AfxAssertNull();
  16. if( b )
  17. {
  18. AfxGetSView().Load( AfxGetProfile().GetSViewFile() );
  19. }
  20. return b;
  21. }
  22. _AFXCORE_INLINE BOOL AfxAssertValidStd( )
  23. {
  24. BOOL b = AfxGetSView().IsStd();
  25. AfxAssertNull();
  26. if( b )
  27. {
  28. AfxGetSView().Load( AfxGetProfile().GetSViewFile() );
  29. }
  30. return b;
  31. }
  32. _AFXCORE_INLINE BOOL AfxAssertValidProf( )
  33. {
  34. BOOL b = AfxGetSView().IsProf();
  35. AfxAssertNull();
  36. if( b )
  37. {
  38. AfxGetSView().Load( AfxGetProfile().GetSViewFile() );
  39. }
  40. return b;
  41. }
  42. _AFXCORE_INLINE BOOL AfxAssertFunclimitStd( UINT nIDString )
  43. {
  44. if( !AfxGetSView().IsStd() && !AfxGetSView().IsProf() )
  45. {
  46. AfxAssertNull();
  47. AfxMessageBox( nIDString, MB_OK | MB_ICONINFORMATION );
  48. AfxAssertNull();
  49. return FALSE;
  50. }
  51. else
  52. {
  53. AfxGetSView().Load( AfxGetProfile().GetSViewFile() );
  54. }
  55. return TRUE;
  56. }
  57. _AFXCORE_INLINE BOOL AfxAssertFunclimitProf( UINT nIDString )
  58. {
  59. if( !AfxGetSView().IsProf() )
  60. {
  61. AfxAssertNull();
  62. AfxMessageBox( nIDString, MB_OK | MB_ICONINFORMATION );
  63. AfxAssertNull();
  64. return FALSE;
  65. }
  66. else
  67. {
  68. AfxGetSView().Load( AfxGetProfile().GetSViewFile() );
  69. }
  70. return TRUE;
  71. }
  72. _AFXCORE_INLINE BOOL AfxAssertMessageQuit( )
  73. {
  74. if( !AfxGetSView().AssertValid() )
  75. {
  76. AfxAssertNull();
  77. AfxMessageBox( IDS_SECRET_ASSERTMESSAGE, MB_OK | MB_ICONINFORMATION );
  78. AfxGetStkUIApp()->SaveAllModified();
  79. AfxGetMainFrame()->PostMessage( WM_CLOSE );
  80. return FALSE;
  81. }
  82. else
  83. {
  84. AfxGetSView().Load( AfxGetProfile().GetSViewFile() );
  85. }
  86. return TRUE;
  87. }
  88. _AFXCORE_INLINE BOOL AfxAssertQuit( )
  89. {
  90. if( !AfxGetSView().AssertValid() )
  91. {
  92. AfxAssertNull();
  93. AfxGetStkUIApp()->SaveAllModified();
  94. AfxGetMainFrame()->PostMessage( WM_CLOSE );
  95. return FALSE;
  96. }
  97. else
  98. {
  99. AfxGetSView().Load( AfxGetProfile().GetSViewFile() );
  100. }
  101. return TRUE;
  102. }
  103. _AFXCORE_INLINE CStkUIApp * AfxGetStkUIApp( )
  104. {
  105. CStkUIApp * pApp = (CStkUIApp *)AfxGetApp();
  106. ASSERT( pApp );
  107. return pApp;
  108. }
  109. _AFXCORE_INLINE CMainFrame * AfxGetMainFrame( )
  110. {
  111. CMainFrame * pFrame = DYNAMIC_DOWNCAST( CMainFrame, AfxGetMainWnd() );
  112. ASSERT( !pFrame || pFrame->IsKindOf(RUNTIME_CLASS(CMainFrame)) );
  113. return pFrame;
  114. }
  115. _AFXCORE_INLINE CStaticDoc * AfxGetStaticDoc( )
  116. {
  117. CStkUIApp * pApp = AfxGetStkUIApp();
  118. CStaticDoc * pDoc = pApp->GetStaticDoc();
  119. ASSERT( pDoc && pDoc->IsKindOf(RUNTIME_CLASS(CStaticDoc)) );
  120. return pDoc;
  121. }
  122. _AFXCORE_INLINE CStrategy * AfxGetActiveStrategy( )
  123. {
  124. CStkUIApp * pApp = AfxGetStkUIApp();
  125. CStrategy * pStrategy = pApp->GetActiveStrategy();
  126. return pStrategy;
  127. }
  128. _AFXCORE_INLINE CSimuView * AfxGetSimuView( )
  129. {
  130. CStaticDoc * pStaticDoc = AfxGetStaticDoc();
  131. return (CSimuView *)( pStaticDoc->GetViewIfExist(RUNTIME_CLASS(CSimuView)) );
  132. }
  133. _AFXCORE_INLINE CSListView * AfxGetSListView( )
  134. {
  135. CStaticDoc * pStaticDoc = AfxGetStaticDoc();
  136. return (CSListView *)( pStaticDoc->GetViewIfExist(RUNTIME_CLASS(CSListView)) );
  137. }
  138. _AFXCORE_INLINE CGraphView * AfxGetGraphView( )
  139. {
  140. CStaticDoc * pStaticDoc = AfxGetStaticDoc();
  141. return (CGraphView *)( pStaticDoc->GetViewIfExist(RUNTIME_CLASS(CGraphView)) );
  142. }
  143. _AFXCORE_INLINE CRealTimeView * AfxGetRealTimeView( )
  144. {
  145. CStaticDoc * pStaticDoc = AfxGetStaticDoc();
  146. return (CRealTimeView *)( pStaticDoc->GetViewIfExist(RUNTIME_CLASS(CRealTimeView)) );
  147. }
  148. _AFXCORE_INLINE CMultiSortView * AfxGetMultiSortView( )
  149. {
  150. CStaticDoc * pStaticDoc = AfxGetStaticDoc();
  151. return (CMultiSortView *)( pStaticDoc->GetViewIfExist(RUNTIME_CLASS(CMultiSortView)) );
  152. }
  153. _AFXCORE_INLINE CBaseView * AfxGetBaseView( )
  154. {
  155. CStaticDoc * pStaticDoc = AfxGetStaticDoc();
  156. return (CBaseView *)( pStaticDoc->GetViewIfExist(RUNTIME_CLASS(CBaseView)) );
  157. }
  158. _AFXCORE_INLINE CInfoView * AfxGetInfoView( )
  159. {
  160. CStaticDoc * pStaticDoc = AfxGetStaticDoc();
  161. return (CInfoView *)( pStaticDoc->GetViewIfExist(RUNTIME_CLASS(CInfoView)) );
  162. }
  163. _AFXCORE_INLINE CSelectorView * AfxGetSelectorView( )
  164. {
  165. CStaticDoc * pStaticDoc = AfxGetStaticDoc();
  166. return (CSelectorView *)( pStaticDoc->GetViewIfExist(RUNTIME_CLASS(CSelectorView)) );
  167. }
  168. _AFXCORE_INLINE BOOL AfxSwitchToStaticView( CRuntimeClass * pViewClass  )
  169. {
  170. CStaticDoc * pStaticDoc = AfxGetStaticDoc();
  171. BOOL bOK = pStaticDoc->ShowStaticView( pViewClass );
  172. CView * pView = pStaticDoc->GetViewIfExist( pViewClass );
  173. if( pView )
  174. pView->SetFocus( );
  175. return bOK;
  176. }
  177. _AFXCORE_INLINE void AfxShowSlist( int nType, LPCTSTR lpszDomain, DWORD dwDate )
  178. {
  179. CSListView * pSListView = AfxGetSListView( );
  180. if( pSListView )
  181. {
  182. pSListView->SetCurrentStatus( nType, lpszDomain, dwDate );
  183. AfxSwitchToStaticView( RUNTIME_CLASS(CSListView) );
  184. }
  185. else
  186. {
  187. AfxSwitchToStaticView( RUNTIME_CLASS(CSListView) );
  188. pSListView = AfxGetSListView( );
  189. if( pSListView )
  190. pSListView->SetCurrentStatus( nType, lpszDomain, dwDate );
  191. }
  192. }
  193. _AFXCORE_INLINE void AfxShowSlistSortDP( int nType, LPCTSTR lpszDomain, DWORD dwDate )
  194. {
  195. CSListView * pSListView = AfxGetSListView( );
  196. if( pSListView )
  197. {
  198. pSListView->SetSortVariant( SLH_DIFFPERCENT );
  199. pSListView->SetCurrentStatus( nType, lpszDomain, dwDate );
  200. AfxSwitchToStaticView( RUNTIME_CLASS(CSListView) );
  201. }
  202. else
  203. {
  204. AfxSwitchToStaticView( RUNTIME_CLASS(CSListView) );
  205. pSListView = AfxGetSListView( );
  206. if( pSListView )
  207. {
  208. pSListView->SetSortVariant( SLH_DIFFPERCENT );
  209. pSListView->SetCurrentStatus( nType, lpszDomain, dwDate );
  210. }
  211. }
  212. }
  213. _AFXCORE_INLINE void AfxShowInfo( int nServer )
  214. {
  215. CInfoView * pInfoView = AfxGetInfoView( );
  216. if( pInfoView )
  217. {
  218. pInfoView->SetCurrentServer( nServer );
  219. AfxSwitchToStaticView( RUNTIME_CLASS(CInfoView) );
  220. pInfoView->OnRefresh( );
  221. }
  222. else
  223. {
  224. AfxSwitchToStaticView( RUNTIME_CLASS(CInfoView) );
  225. pInfoView = AfxGetInfoView( );
  226. if( pInfoView )
  227. {
  228. pInfoView->SetCurrentServer( nServer );
  229. pInfoView->OnRefresh( );
  230. }
  231. }
  232. }
  233. _AFXCORE_INLINE void AfxShowMultiSort( LONG type )
  234. {
  235. CMultiSortView * pMultiSortView = AfxGetMultiSortView( );
  236. if( pMultiSortView )
  237. {
  238. pMultiSortView->SetMultiSortClass( type );
  239. pMultiSortView->Invalidate();
  240. AfxSwitchToStaticView( RUNTIME_CLASS(CMultiSortView) );
  241. }
  242. else
  243. {
  244. AfxSwitchToStaticView( RUNTIME_CLASS(CMultiSortView) );
  245. pMultiSortView = AfxGetMultiSortView( );
  246. if( pMultiSortView )
  247. {
  248. pMultiSortView->SetMultiSortClass( type );
  249. pMultiSortView->Invalidate();
  250. }
  251. }
  252. }
  253. _AFXCORE_INLINE BOOL AfxShowStockRealTime( int nStockIndex, BOOL bFromSList )
  254. {
  255. AfxGetProfile().SetCurrentStock( nStockIndex, bFromSList );
  256. CRealTimeView * pView = AfxGetRealTimeView();
  257. if( pView )
  258. {
  259. pView->ChangeDrawMode( CRealTime::modePriceLine );
  260. pView->ShowMultiStock( 1 );
  261. AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_REALTIMEVIEW, NULL );
  262. AfxSwitchToStaticView( RUNTIME_CLASS(CRealTimeView) );
  263. }
  264. else
  265. {
  266. AfxSwitchToStaticView( RUNTIME_CLASS(CRealTimeView) );
  267. pView = AfxGetRealTimeView();
  268. if( pView )
  269. {
  270. pView->ChangeDrawMode( CRealTime::modePriceLine );
  271. pView->ShowMultiStock( 1 );
  272. }
  273. }
  274. return TRUE;
  275. }
  276. _AFXCORE_INLINE BOOL AfxShowStockRealTime( const char * szCode )
  277. {
  278. AfxGetProfile().SetCurrentStock( szCode, FALSE );
  279. CRealTimeView * pView = AfxGetRealTimeView();
  280. if( pView )
  281. {
  282. pView->ChangeDrawMode( CRealTime::modePriceLine );
  283. pView->ShowMultiStock( 1 );
  284. AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_REALTIMEVIEW, NULL );
  285. AfxSwitchToStaticView( RUNTIME_CLASS(CRealTimeView) );
  286. }
  287. else
  288. {
  289. AfxSwitchToStaticView( RUNTIME_CLASS(CRealTimeView) );
  290. pView = AfxGetRealTimeView();
  291. if( pView )
  292. {
  293. pView->ChangeDrawMode( CRealTime::modePriceLine );
  294. pView->ShowMultiStock( 1 );
  295. }
  296. }
  297. return TRUE;
  298. }
  299. _AFXCORE_INLINE BOOL AfxShowStockGraph( int nStockIndex, BOOL bFromSList )
  300. {
  301. AfxGetProfile().SetCurrentStock( nStockIndex, bFromSList );
  302. AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_GRAPHVIEW, NULL );
  303. AfxSwitchToStaticView( RUNTIME_CLASS(CGraphView) );
  304. return TRUE;
  305. }
  306. _AFXCORE_INLINE BOOL AfxShowStockGraph( const char * szCode )
  307. {
  308. AfxGetProfile().SetCurrentStock( szCode, FALSE );
  309. AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_GRAPHVIEW, NULL );
  310. AfxSwitchToStaticView( RUNTIME_CLASS(CGraphView) );
  311. return TRUE;
  312. }
  313. _AFXCORE_INLINE BOOL AfxShowStockBase( int nStockIndex, BOOL bFromSList )
  314. {
  315. AfxGetProfile().SetCurrentStock( nStockIndex, bFromSList );
  316. AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_BASEVIEW, NULL );
  317. AfxSwitchToStaticView( RUNTIME_CLASS(CBaseView) );
  318. return TRUE;
  319. }
  320. _AFXCORE_INLINE BOOL AfxShowStockBase( const char * szCode )
  321. {
  322. AfxGetProfile().SetCurrentStock( szCode, FALSE );
  323. AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_BASEVIEW, NULL );
  324. AfxSwitchToStaticView( RUNTIME_CLASS(CBaseView) );
  325. return TRUE;
  326. }
  327. _AFXCORE_INLINE BOOL AfxShowStockInfo( int nStockIndex, BOOL bFromSList )
  328. {
  329. AfxGetProfile().SetCurrentStock( nStockIndex, bFromSList );
  330. AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_INFOVIEW, NULL );
  331. AfxSwitchToStaticView( RUNTIME_CLASS(CInfoView) );
  332. ::PostMessage( AfxGetInfoView()->GetSafeHwnd(), WM_COMMAND, ID_VIEW_F10, 0 );
  333. return TRUE;
  334. }
  335. _AFXCORE_INLINE BOOL AfxShowStockInfo( const char * szCode )
  336. {
  337. AfxGetProfile().SetCurrentStock( szCode, FALSE );
  338. AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_INFOVIEW, NULL );
  339. AfxSwitchToStaticView( RUNTIME_CLASS(CInfoView) );
  340. ::PostMessage( AfxGetInfoView()->GetSafeHwnd(), WM_COMMAND, ID_VIEW_F10, 0 );
  341. return TRUE;
  342. }
  343. _AFXCORE_INLINE BOOL AfxShowStockTech( UINT nTech )
  344. {
  345. if( nTech >= STT_KLINE_MIN && nTech <= STT_KLINE_MAX )
  346. {
  347. CSPDWordArray & anKLine = AfxGetProfile().GetGraphTechsKLine();
  348. anKLine.RemoveAll();
  349. anKLine.Add( nTech );
  350. }
  351. else
  352. {
  353. CSPDWordArray & anTech = AfxGetProfile().GetGraphTechsShow();
  354. for( int k=anTech.GetSize()-1; k>=0; k-- )
  355. {
  356. if( nTech == anTech[k] )
  357. anTech.RemoveAt(k);
  358. }
  359. if( anTech.GetSize() == 0 )
  360. anTech.Add( nTech );
  361. else
  362. anTech.SetAt( anTech.GetSize()-1, nTech );
  363. }
  364. AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_GRAPHVIEW, NULL );
  365. AfxSwitchToStaticView( RUNTIME_CLASS(CGraphView) );
  366. return TRUE;
  367. }
  368. // 策略改动之后,刷新视图
  369. //_AFXCORE_INLINE void AfxOnStrategyUpdated( CStrategy * pStrategy, BOOL bReRealRun )
  370. //{
  371. // CStrategyView * pStrategyView = AfxGetStrategyView();
  372. // if( pStrategyView )
  373. // pStrategyView->SendMessage( WM_USER_UPDATESTRATEGY, DWORD(pStrategy) );
  374. // CStaticDoc  * pStaticDoc  = AfxGetStaticDoc();
  375. // if( pStaticDoc )
  376. // {
  377. // pStaticDoc->UpdateAllViews( NULL, UPDATE_HINT_WIZARDVIEW, NULL );
  378. // if( bReRealRun )
  379. // pStaticDoc->UpdateAllViews( NULL, UPDATE_HINT_SIMUVIEW_REREALRUN, NULL );
  380. // else
  381. // pStaticDoc->UpdateAllViews( NULL, UPDATE_HINT_SIMUVIEW, NULL );
  382. // }
  383. //}
  384. _AFXCORE_INLINE BOOL AfxMenuInsertDomain( CMenu *pMenu, int nMenuPos, UINT nIDStart, UINT nIDEnd )
  385. {
  386. if( !pMenu || !::IsMenu( pMenu->m_hMenu ) )
  387. return FALSE;
  388. CDomainContainer &container = AfxGetDomainContainer();
  389. for( UINT nID=nIDStart; (int(nID-nIDStart)) < container.GetSize() && nID <= nIDEnd; nID ++ )
  390. {
  391. CDomain & domain = container.ElementAt(nID-nIDStart);
  392. UINT nFlags = MF_BYPOSITION | MF_STRING;
  393. if( nID-nIDStart+1 >= 79 || nID == nIDEnd )
  394. {
  395. CString strMoreDomain;
  396. strMoreDomain.LoadString( IDS_DOMAIN_MOREDOMAIN );
  397. pMenu->InsertMenu( nMenuPos++, MF_BYPOSITION | MF_SEPARATOR, NULL, "" );
  398. pMenu->InsertMenu( nMenuPos++, nFlags, nIDEnd, strMoreDomain );
  399. break;
  400. }
  401. if( ! ((nID-nIDStart+1)%20) && nID != nIDStart )
  402. nFlags |= MF_MENUBARBREAK;
  403. pMenu->InsertMenu( nMenuPos++, nFlags, nID, domain.m_strName );
  404. }
  405. if( 0 == container.GetSize() )
  406. {
  407. CString strNoDomain;
  408. strNoDomain.LoadString( IDS_SLISTBAR_NODOMAIN );
  409. pMenu->InsertMenu( nMenuPos++, MF_BYPOSITION | MF_STRING, ID_SEPARATOR, strNoDomain );
  410. }
  411. return TRUE;
  412. }
  413. _AFXCORE_INLINE BOOL AfxMenuInsertGroup(CMenu *pMenu, int nMenuPos, UINT nIDStart, UINT nIDEnd, BOOL bEnable )
  414. {
  415. if( !pMenu || !::IsMenu( pMenu->m_hMenu ) )
  416. return FALSE;
  417. CDomainContainer &container = AfxGetGroupContainer();
  418. for( UINT nID=nIDStart; (int(nID-nIDStart)) < container.GetSize() && nID <= nIDEnd; nID ++ )
  419. {
  420. CDomain & domain = container.ElementAt(nID-nIDStart);
  421. UINT nFlags = MF_BYPOSITION | MF_STRING;
  422. if( !bEnable )
  423. nFlags |= MF_GRAYED;
  424. if( nID-nIDStart+1 >= 79 || nID == nIDEnd )
  425. {
  426. CString strMoreGroup;
  427. strMoreGroup.LoadString( IDS_DOMAIN_MOREGROUP );
  428. pMenu->InsertMenu( nMenuPos++, MF_BYPOSITION | MF_SEPARATOR, NULL, "" );
  429. pMenu->InsertMenu( nMenuPos++, nFlags, nIDEnd, strMoreGroup );
  430. break;
  431. }
  432. if( ! ((nID-nIDStart+1)%20) && nID != nIDStart )
  433. nFlags |= MF_MENUBARBREAK;
  434. pMenu->InsertMenu( nMenuPos ++, nFlags, nID, domain.m_strName );
  435. }
  436. if( 0 == container.GetSize() )
  437. {
  438. CString strNoGroup;
  439. strNoGroup.LoadString( IDS_SLISTBAR_NOGROUP );
  440. pMenu->InsertMenu( nMenuPos++, MF_BYPOSITION | MF_STRING, ID_SEPARATOR, strNoGroup );
  441. }
  442. return TRUE;
  443. }