MainFrm.cpp
上传用户:szcysw
上传日期:2013-03-11
资源大小:6752k
文件大小:5k
源码类别:

界面编程

开发平台:

Visual C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  2. //
  3. #include "stdafx.h"
  4. #include "DevDemo.h"
  5. #include "MainFrm.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CMainFrame
  13. IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
  14. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
  15. //{{AFX_MSG_MAP(CMainFrame)
  16. ON_WM_CREATE()
  17. //}}AFX_MSG_MAP
  18. END_MESSAGE_MAP()
  19. static UINT indicators[] =
  20. {
  21. ID_SEPARATOR,           // status line indicator
  22. ID_INDICATOR_CAPS,
  23. ID_INDICATOR_NUM,
  24. ID_INDICATOR_SCRL,
  25. };
  26. /////////////////////////////////////////////////////////////////////////////
  27. // CMainFrame construction/destruction
  28. CMainFrame::CMainFrame()
  29. {
  30. // TODO: add member initialization code here
  31. }
  32. CMainFrame::~CMainFrame()
  33. {
  34. }
  35. //使用CCJFrameWnd风格的窗口框架
  36. #define CFrameWnd CCJFrameWnd
  37. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  38. {
  39. if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  40. return -1;
  41. if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
  42. | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
  43. !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
  44. {
  45. TRACE0("Failed to create toolbarn");
  46. return -1;  
  47. }
  48. if (!m_wndStatusBar.Create(this) ||
  49. !m_wndStatusBar.SetIndicators(indicators,
  50. sizeof(indicators)/sizeof(UINT)))
  51. {
  52. TRACE0("Failed to create status barn");
  53. return -1;  
  54. }
  55. // TODO: Delete these three lines if you don't want the toolbar to
  56. //  be dockable
  57. m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
  58. EnableDocking(CBRS_ALIGN_ANY);
  59. DockControlBar(&m_wndToolBar);
  60. CRect rect;
  61. this->GetClientRect(&rect);
  62. // 新建3个工作区
  63. //工作区一:依靠在左
  64. if( !m_wndWorkspace1.Create(this, ID_VIEW_WORKSPACE,
  65. _T("类查看器"), CSize(200,200), CBRS_LEFT ))
  66. {
  67. TRACE0("工作区1创建失败n");
  68. return -1;
  69. }
  70. /*工作区二:依靠在右,将其宽度设为1000,目的是让
  71. 工作区二能紧靠工作区一*/
  72. if( !m_wndWorkspace2.Create(this, ID_VIEW_WORKSPACE2,
  73. _T("文本编辑框"), CSize(1000,200), CBRS_RIGHT))
  74. {
  75. TRACE0("工作区2创建失败n");
  76. return -1;
  77. }
  78. //工作区三:依靠在下
  79. if( !m_wndWorkspace3.Create(this, ID_VIEW_WORKSPACE3,
  80. _T("超文本"), CSize(200,200), CBRS_BOTTOM ))
  81. {
  82. TRACE0("工作区3创建失败n");
  83. return -1;
  84. }
  85. //设置标签使用的图片
  86. m_TabImages.Create( IDB_TAB, 16, 1, RGB( 0,255,0 ));
  87. m_wndWorkspace1.SetTabImageList( &m_TabImages );
  88. m_wndWorkspace2.SetTabImageList( &m_TabImages );
  89. m_wndWorkspace2.SetTabImageList( &m_TabImages );
  90. //对工作区1进行初始化
  91. CDevDemoApp * app;
  92. app=(CDevDemoApp * )AfxGetApp();
  93. //添加标签1
  94. m_pDocClass = DYNAMIC_DOWNCAST(CMyDoc, app->
  95. m_pClassDocTemplate->CreateNewDocument());
  96. ASSERT_KINDOF( CMyDoc, m_pDocClass );
  97. m_wndWorkspace1.AddView( _T( "标签1" ), RUNTIME_CLASS(CMyView ), m_pDocClass );
  98. //添加标签2
  99. m_pDocResource = DYNAMIC_DOWNCAST(CTreeDoc1, app->
  100. m_pResourceDocTemplate->CreateNewDocument());
  101. ASSERT_KINDOF( CTreeDoc1, m_pDocResource );
  102. m_wndWorkspace1.AddView( _T( "标签2" ), RUNTIME_CLASS( CTree2 ), m_pDocResource );
  103. //添加标签3
  104. m_pDocFile = DYNAMIC_DOWNCAST(CTreeDoc2, app->
  105. m_pFileDocTemplate->CreateNewDocument());
  106. ASSERT_KINDOF(CTreeDoc2, m_pDocFile );
  107. m_wndWorkspace1.AddView( _T( "标签3" ), RUNTIME_CLASS(CTree2), m_pDocFile );
  108. //对工作区2进行初始化
  109. m_wndWorkspace2.AddView( _T( "Debug" ), RUNTIME_CLASS(CMyView ), m_pDocClass );
  110. m_wndWorkspace2.AddView( _T( "Output" ), RUNTIME_CLASS(CMyView ), m_pDocClass );
  111. m_wndWorkspace2.AddView( _T( "FindInfiles" ), RUNTIME_CLASS(CMyView ), m_pDocClass );
  112. //对工作区3进行初始化
  113. m_pDocHtml=DYNAMIC_DOWNCAST(CHTMLDOC, app->m_htmlDoc->CreateNewDocument());
  114. ASSERT_KINDOF(CHTMLDOC, m_pDocHtml);
  115. m_wndWorkspace3.AddView( _T( "超文本浏览" ), RUNTIME_CLASS(CMyHTML), m_pDocHtml);
  116. //设置工作区的依靠对齐方式
  117. m_wndWorkspace1.EnableDockingOnSizeBar( CBRS_ALIGN_TOP|CBRS_ALIGN_LEFT );
  118. m_wndWorkspace2.EnableDockingOnSizeBar( CBRS_ALIGN_TOP|CBRS_ALIGN_RIGHT );
  119. m_wndWorkspace3.EnableDockingOnSizeBar( CBRS_ALIGN_BOTTOM);
  120. EnableDockingSizeBar( CBRS_ALIGN_ANY );
  121. //分别停靠三个工作区
  122. DockSizeBar( &m_wndWorkspace1 );
  123. DockSizeBar( &m_wndWorkspace2);
  124. DockSizeBar( &m_wndWorkspace3 );
  125. return 0;
  126. }
  127. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  128. {
  129. if( !CFrameWnd::PreCreateWindow(cs) )
  130. return FALSE;
  131. // TODO: Modify the Window class or styles here by modifying
  132. //  the CREATESTRUCT cs
  133. cs.style = WS_OVERLAPPED|WS_CAPTION|WS_THICKFRAME|WS_SYSMENU|
  134. WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_MAXIMIZE;
  135. return TRUE;
  136. }
  137. /////////////////////////////////////////////////////////////////////////////
  138. // CMainFrame diagnostics
  139. #ifdef _DEBUG
  140. void CMainFrame::AssertValid() const
  141. {
  142. CFrameWnd::AssertValid();
  143. }
  144. void CMainFrame::Dump(CDumpContext& dc) const
  145. {
  146. CFrameWnd::Dump(dc);
  147. }
  148. #endif //_DEBUG
  149. /////////////////////////////////////////////////////////////////////////////
  150. // CMainFrame message handlers