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

金融证券系统

开发平台:

Visual C++

  1. //-----------------------------------------------------------------------//
  2. // This is a part of the GuiLib MFC Extention.  //
  3. // Autor  :  Francisco Campos  //
  4. // (C) 2002 Francisco Campos <www.beyondata.com> All rights reserved     //
  5. // This code is provided "as is", with absolutely no warranty expressed  //
  6. // or implied. Any use is at your own risk.  //
  7. // You must obtain the author's consent before you can include this code //
  8. // in a software library.  //
  9. // If the source code in  this file is used in any application  //
  10. // then acknowledgement must be made to the author of this program  //
  11. // fcampos@tutopia.com  //
  12. //-----------------------------------------------------------------------//
  13. #include "stdafx.h"
  14. #include "guiframewnd.h"
  15. #include "..headerguiframewnd.h"
  16. IMPLEMENT_DYNCREATE(CGuiFrameWnd, CFrameWnd)
  17. CGuiFrameWnd::CGuiFrameWnd(void)
  18. {
  19. m_MdiTabbed=FALSE;
  20. }
  21. CGuiFrameWnd::~CGuiFrameWnd(void)
  22. {
  23. }
  24. BOOL CGuiFrameWnd::PreCreateWindow(CREATESTRUCT& cs)
  25. {
  26. return CFrameWnd::PreCreateWindow(cs);
  27. }
  28. //*************************************************************************
  29. BOOL CGuiFrameWnd::PreCreateWindow(CREATESTRUCT& cs, UINT nIconID)
  30. {
  31. cs.lpszClass = AfxRegisterWndClass( 0, NULL, NULL,
  32. AfxGetApp()->LoadIcon(nIconID));
  33. ASSERT(cs.lpszClass);
  34. return CFrameWnd::PreCreateWindow(cs);
  35. }
  36. void CGuiFrameWnd::EnableDocking(DWORD dwDockStyle)
  37. {
  38. ASSERT((dwDockStyle & ~ (CBRS_ALIGN_ANY | CBRS_FLOAT_MULTI)) == 0);
  39. m_pFloatingFrameClass = RUNTIME_CLASS(CMiniDockFrameWnd);
  40. CGuiDocBarExten* pDock;
  41. DWORD dwStyle = WS_CHILD| WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
  42. DWORD dwstyle;
  43. pDock = new CGuiDocBarExten();
  44. pDock->Create(this,dwStyle|CBRS_TOP, AFX_IDW_DOCKBAR_TOP);
  45. dwstyle = pDock->GetBarStyle();
  46. dwstyle &= ~CBRS_BORDER_ANY;
  47. pDock->SetBarStyle(dwstyle);
  48. pDock = new CGuiDocBarExten();
  49. pDock->Create(this, dwStyle|CBRS_BOTTOM, AFX_IDW_DOCKBAR_BOTTOM);
  50. dwstyle = pDock->GetBarStyle();
  51. dwstyle &= ~CBRS_BORDER_ANY;
  52. pDock->SetBarStyle(dwstyle);
  53. pDock = new CGuiDocBarExten();
  54. pDock->Create(this,dwStyle|CBRS_LEFT, AFX_IDW_DOCKBAR_LEFT);
  55. dwstyle = pDock->GetBarStyle();
  56. dwstyle &= ~CBRS_BORDER_ANY;
  57. pDock->SetBarStyle(dwstyle);
  58. pDock = new CGuiDocBarExten();
  59. pDock->Create(this,dwStyle|CBRS_RIGHT, AFX_IDW_DOCKBAR_RIGHT);
  60. dwstyle = pDock->GetBarStyle();
  61. dwstyle &= ~CBRS_BORDER_ANY;
  62. pDock->SetBarStyle(dwstyle);
  63. // DockSpecialBars();
  64. }
  65. void CGuiFrameWnd::ShowHideBar(CGuiControlBar* pBar)
  66. {
  67. if (pBar->IsWindowVisible())
  68. ShowControlBar(pBar, FALSE, FALSE);
  69. else
  70. ShowControlBar(pBar, TRUE, FALSE);
  71. }
  72. void CGuiFrameWnd::ShowHideBar(CControlBar* pBar)
  73. {
  74. if (pBar->IsWindowVisible())
  75. ShowControlBar(pBar, FALSE, FALSE);
  76. else
  77. ShowControlBar(pBar, TRUE, FALSE);
  78. }
  79. void CGuiFrameWnd::DockSpecialBars()
  80. {
  81. m_dockToolbarTop.Create(this,CBRS_ALIGN_BOTTOM);
  82. m_dockToolbarBottom.Create(this,CBRS_ALIGN_TOP);
  83. m_dockToolbarLeft.Create(this,CBRS_ALIGN_LEFT);
  84. m_dockToolbarRight.Create(this,CBRS_ALIGN_RIGHT);
  85. /* m_dockToolbarTop.EnableDocking(CBRS_ALIGN_TOP);
  86. m_dockToolbarBottom.EnableDocking(CBRS_ALIGN_BOTTOM);
  87. m_dockToolbarLeft.EnableDocking(CBRS_ALIGN_LEFT);
  88. m_dockToolbarRight.EnableDocking(CBRS_ALIGN_RIGHT);
  89. DockControlBar(&m_dockToolbarTop);
  90. DockControlBar(&m_dockToolbarBottom);
  91. DockControlBar(&m_dockToolbarLeft);
  92. DockControlBar(&m_dockToolbarRight);*/
  93. }
  94. /////////////////////////////////////////////////////////////////////////////
  95. // CGuiMDIFrame message handlers
  96. //***********************************************************************
  97. BOOL CGuiFrameWnd::DestroyWindow()
  98. {
  99. SaveBarState(sProfile);
  100. return CFrameWnd::DestroyWindow();
  101. }
  102. //***********************************************************************
  103. BOOL CGuiFrameWnd::VerifyBarState(LPCTSTR lpszProfileName)
  104. {
  105.     CDockState state;
  106.     state.LoadState(lpszProfileName);
  107.     for (int i = 0; i < state.m_arrBarInfo.GetSize(); i++)
  108.     {
  109.         CControlBarInfo* pInfo = (CControlBarInfo*)state.m_arrBarInfo[i];
  110.         ASSERT(pInfo != NULL);
  111.         int nDockedCount = pInfo->m_arrBarID.GetSize();
  112.         if (nDockedCount > 0)
  113.         {
  114.             // dockbar
  115.             for (int j = 0; j < nDockedCount; j++)
  116.             {
  117.                 UINT nID = (UINT) pInfo->m_arrBarID[j];
  118.                 if (nID == 0) continue; // row separator
  119.                 if (nID > 0xFFFF)
  120.                     nID &= 0xFFFF; // placeholder - get the ID
  121.                 if (GetControlBar(nID) == NULL)
  122.                     return FALSE;
  123.             }
  124.         }
  125.         if (!pInfo->m_bFloating) // floating dockbars can be created later
  126.             if (GetControlBar(pInfo->m_nBarID) == NULL)
  127.                 return FALSE; // invalid bar ID
  128.     }
  129.     return TRUE;
  130. }
  131. void CGuiFrameWnd::LoadBars()
  132. {
  133. if (VerifyBarState(sProfile))
  134. {
  135. LoadBarState(sProfile);
  136. }
  137. }
  138. BEGIN_MESSAGE_MAP(CGuiFrameWnd, CFrameWnd)
  139. ON_WM_CREATE()
  140. END_MESSAGE_MAP()
  141. int CGuiFrameWnd::InitMenu(UINT uIDMenu)
  142. {
  143. if (!m_wndMenuBar.CreateEx(this, WS_CHILD | WS_VISIBLE | CBRS_TOP
  144. | CBRS_GRIPPER | CBRS_SIZE_DYNAMIC ) ||
  145. !m_wndMenuBar.LoadMenuBar(uIDMenu))
  146. {
  147. TRACE0("Failed to create menubarn");
  148. return -1;      // fail to create
  149. }
  150. m_NewMenu.LoadMenu(uIDMenu);
  151. m_wndCool.Install(this);
  152. m_wndCool.LoadToolbar(uIDMenu);
  153. return 0;
  154. }
  155. int CGuiFrameWnd::InitStatusBar(const UINT* lpIDArray,int nSize)
  156. {
  157. if (!m_wndStatusBar.Create(this) ||
  158. !m_wndStatusBar.SetIndicators(lpIDArray,
  159.   nSize))
  160. {
  161. TRACE0("Failed to create status barn");
  162. return -1;      // fail to create
  163. }
  164. return 0;
  165. }
  166. int CGuiFrameWnd::InitToolBar(UINT uIDMenu)
  167. {
  168. if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
  169. | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,CRect(0,0,0,0),uIDMenu) ||
  170. !m_wndToolBar.LoadToolBar(uIDMenu))
  171. {
  172. TRACE0("Failed to create toolbarn");
  173. return -1;      // fail to create
  174. }
  175. return 0;
  176. }
  177. int CGuiFrameWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
  178. {
  179. if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  180. return -1;
  181. // TODO:  Add your specialized creation code here
  182. return 0;
  183. }