MainFrm.cpp
上传用户:aokegd
上传日期:2009-12-14
资源大小:1276k
文件大小:3k
源码类别:

书籍源码

开发平台:

Visual C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  2. //
  3. #include "stdafx.h"
  4. #include "SplitWndDemo.h"
  5. #include "MainFrm.h"
  6. #include "SplitWndDemoView.h"
  7. #include "View2.h"
  8. #include "View3.h"
  9. #include "View4.h"
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #undef THIS_FILE
  13. static char THIS_FILE[] = __FILE__;
  14. #endif
  15. /////////////////////////////////////////////////////////////////////////////
  16. // CMainFrame
  17. IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
  18. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
  19. //{{AFX_MSG_MAP(CMainFrame)
  20. // NOTE - the ClassWizard will add and remove mapping macros here.
  21. //    DO NOT EDIT what you see in these blocks of generated code !
  22. ON_WM_CREATE()
  23. //}}AFX_MSG_MAP
  24. END_MESSAGE_MAP()
  25. static UINT indicators[] =
  26. {
  27. ID_SEPARATOR,           // status line indicator
  28. ID_INDICATOR_CAPS,
  29. ID_INDICATOR_NUM,
  30. ID_INDICATOR_SCRL,
  31. };
  32. /////////////////////////////////////////////////////////////////////////////
  33. // CMainFrame construction/destruction
  34. CMainFrame::CMainFrame()
  35. {
  36. // TODO: add member initialization code here
  37. }
  38. CMainFrame::~CMainFrame()
  39. {
  40. }
  41. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  42. {
  43. if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  44. return -1;
  45. if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
  46. | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
  47. !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
  48. {
  49. TRACE0("Failed to create toolbarn");
  50. return -1;      // fail to create
  51. }
  52. if (!m_wndStatusBar.Create(this) ||
  53. !m_wndStatusBar.SetIndicators(indicators,
  54.   sizeof(indicators)/sizeof(UINT)))
  55. {
  56. TRACE0("Failed to create status barn");
  57. return -1;      // fail to create
  58. }
  59. // TODO: Delete these three lines if you don't want the toolbar to
  60. //  be dockable
  61. m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
  62. EnableDocking(CBRS_ALIGN_ANY);
  63. DockControlBar(&m_wndToolBar);
  64. return 0;
  65. }
  66. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  67. {
  68. if( !CFrameWnd::PreCreateWindow(cs) )
  69. return FALSE;
  70. // TODO: Modify the Window class or styles here by modifying
  71. //  the CREATESTRUCT cs
  72. return TRUE;
  73. }
  74. /////////////////////////////////////////////////////////////////////////////
  75. // CMainFrame diagnostics
  76. #ifdef _DEBUG
  77. void CMainFrame::AssertValid() const
  78. {
  79. CFrameWnd::AssertValid();
  80. }
  81. void CMainFrame::Dump(CDumpContext& dc) const
  82. {
  83. CFrameWnd::Dump(dc);
  84. }
  85. #endif //_DEBUG
  86. /////////////////////////////////////////////////////////////////////////////
  87. // CMainFrame message handlers
  88. BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
  89. {
  90. //创建一个静态分栏窗口,分为三行一列 
  91.     if(m_wndSplitter1.CreateStatic(this,3,1)==NULL) 
  92.       return FALSE;
  93.     //将CSplitWndDemoView连接到0行0列窗格上
  94.     m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CSplitWndDemoView),CSize(100,100), pContext); 
  95.     m_wndSplitter1.CreateView(2,0,RUNTIME_CLASS(CView4),CSize(100,100),pContext); //将CView4连接到0行2列
  96.     if(m_wndSplitter2.CreateStatic(&m_wndSplitter1,1,2,WS_CHILD|WS_VISIBLE, m_wndSplitter1.IdFromRowCol(1, 0))==NULL) 
  97.       return FALSE; //将第1行0列再分开1行2列 
  98.     //将CView2类连接到第二个分栏对象的0行0列
  99.     m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CView2),CSize(400,300),pContext); //将CView3类连接到第二个分栏对象的0行1列
  100.     m_wndSplitter2.CreateView(0,1,RUNTIME_CLASS(CView3),CSize(400,300),pContext); 
  101.     return TRUE; 
  102. // return CFrameWnd::OnCreateClient(lpcs, pContext);
  103. }