MainFrm.cpp
上传用户:yklx818
上传日期:2013-04-13
资源大小:459k
文件大小:4k
源码类别:

GIS编程

开发平台:

Visual C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  2. //
  3. #include "stdafx.h"
  4. #include "Draw.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_DYNAMIC(CMainFrame, CMDIFrameWnd)
  14. BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
  15. //{{AFX_MSG_MAP(CMainFrame)
  16. ON_WM_CREATE()
  17. ON_COMMAND(ID_VIEW_DATABASE, OnViewDatabase)
  18. //}}AFX_MSG_MAP
  19. // Global help commands
  20. ON_COMMAND(ID_HELP_FINDER, CMDIFrameWnd::OnHelpFinder)
  21. ON_COMMAND(ID_HELP, CMDIFrameWnd::OnHelp)
  22. ON_COMMAND(ID_CONTEXT_HELP, CMDIFrameWnd::OnContextHelp)
  23. ON_COMMAND(ID_DEFAULT_HELP, CMDIFrameWnd::OnHelpFinder)
  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 (CMDIFrameWnd::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( !CMDIFrameWnd::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. CMDIFrameWnd::AssertValid();
  80. }
  81. void CMainFrame::Dump(CDumpContext& dc) const
  82. {
  83. CMDIFrameWnd::Dump(dc);
  84. }
  85. #endif //_DEBUG
  86. /////////////////////////////////////////////////////////////////////////////
  87. // CMainFrame message handlers
  88. void CMainFrame::OnViewDatabase() 
  89. {
  90. // TODO: Add your command handler code here
  91.     //得到指向活动的子框架窗口对象的指针
  92. CMDIChildWnd* pActiveChild=MDIGetActive();
  93. CDocument* pDocument;
  94. if(pActiveChild==NULL||(pDocument=pActiveChild->GetActiveDocument())==NULL)
  95. //如果不存在子框架窗口对象或者不存在活动的文档对象,应用程序出错,给出提示信息退出
  96. {
  97. TRACE("Warning: No active document for WindowNew command.n");
  98. AfxMessageBox(AFX_IDP_COMMAND_FAILURE);
  99. return ;
  100. }
  101. CDrawApp* pApp=(CDrawApp*)AfxGetApp();
  102. CDocTemplate* pTemplate=pApp->GetDocTemplate1();
  103. ASSERT_VALID(pTemplate);
  104. //利用当前活动的文档对象指针,调用CreatNewFrame函数创建一个子框架窗口对象和视图对象
  105. CFrameWnd* pFrame=pTemplate->CreateNewFrame(pDocument,pActiveChild);
  106. if(pFrame==NULL)
  107. {
  108. TRACE("Warning: failed to create new frame.n");
  109. return ;
  110. }
  111. pTemplate->InitialUpdateFrame(pFrame,pDocument);
  112. }