MainFrm.cpp
上传用户:y440e3
上传日期:2010-03-08
资源大小:200k
文件大小:6k
源码类别:

GIS编程

开发平台:

Visual C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  2. //
  3. #include "stdafx.h"
  4. #include "Draw.h"
  5. #include "Drawdoc.h"
  6. #include "Drawview.h"
  7. #include "MainFrm.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CMainFrame
  15. class CDrawDoc;
  16. class CDrawView;
  17. CMemFile pFile;
  18. IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
  19. BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
  20. //{{AFX_MSG_MAP(CMainFrame)
  21. ON_WM_CREATE()
  22. ON_COMMAND(ID_EDIT_CC, OnEditCut)
  23. ON_COMMAND(ID_VIEW_TOOLBAR1, OnViewToolbar1)
  24. ON_UPDATE_COMMAND_UI(ID_VIEW_TOOLBAR1, OnUpdateViewToolbar1)
  25. ON_COMMAND(ID_WINDOW_NEW, OnWindowNew)
  26. ON_COMMAND(ID_VIEW_DATABASE, OnViewDatabase)
  27. //}}AFX_MSG_MAP
  28. // Global help commands
  29. ON_COMMAND(ID_HELP_FINDER, CMDIFrameWnd::OnHelpFinder)
  30. ON_COMMAND(ID_HELP, CMDIFrameWnd::OnHelp)
  31. ON_COMMAND(ID_CONTEXT_HELP, CMDIFrameWnd::OnContextHelp)
  32. ON_COMMAND(ID_DEFAULT_HELP, CMDIFrameWnd::OnHelpFinder)
  33. END_MESSAGE_MAP()
  34. static UINT BASED_CODE indicators[] =
  35. {
  36. ID_SEPARATOR,
  37. ID_SEPARATOR,
  38. ID_SEPARATOR,
  39. ID_SEPARATOR,
  40. };
  41. /////////////////////////////////////////////////////////////////////////////
  42. // CMainFrame construction/destruction
  43. CMainFrame::CMainFrame()
  44. {
  45. // TODO: add member initialization code here
  46. BOOL YN=pFile.Open("undo.dat",CFile::modeReadWrite|CFile::typeBinary|CFile::modeCreate);
  47. if(YN)
  48. {
  49. YN=FALSE;
  50. pFile.Write((unsigned char *)&YN,sizeof(YN));
  51. }
  52. }
  53. CMainFrame::~CMainFrame()
  54. {
  55. pFile.Close();
  56. }
  57. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  58. {
  59. if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
  60. return -1;
  61. if (!m_wndToolBar.Create(this) ||
  62. !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
  63. {
  64. TRACE0("Failed to create toolbarn");
  65. return -1;      // fail to create
  66. }
  67. if (!m_wndStatusBar.Create(this) ||
  68. !m_wndStatusBar.SetIndicators(indicators,
  69.   sizeof(indicators)/sizeof(UINT)))
  70. {
  71. TRACE0("Failed to create status barn");
  72. return -1;      // fail to create
  73. }
  74.    //设置各指示器的风格和宽度
  75.    m_wndStatusBar.SetPaneInfo(1,300,SBPS_NORMAL,180);
  76.    m_wndStatusBar.SetPaneInfo(2,301,SBPS_NORMAL,80);
  77.    m_wndStatusBar.SetPaneInfo(3,302,SBPS_NORMAL,80);
  78.    m_wndStatusBar.SetPaneInfo(0,304,SBPS_STRETCH,80);
  79. // TODO: Remove this if you don't want tool tips or a resizeable toolbar
  80. m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
  81. CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
  82. // TODO: Delete these three lines if you don't want the toolbar to
  83. //  be dockable
  84. m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
  85. EnableDocking(CBRS_ALIGN_ANY);
  86. DockControlBar(&m_wndToolBar);
  87. if (!m_wndToolBar1.Create(this) ||
  88. !m_wndToolBar1.LoadToolBar(IDR_TOOLBAR1))
  89. {
  90. TRACE0("Failed to create toolbarn");
  91. return -1;      // fail to create
  92. }
  93. m_wndToolBar1.SetBarStyle(m_wndToolBar1.GetBarStyle() |
  94. CBRS_FLOATING | CBRS_FLYBY );
  95. // TODO: Delete these three lines if you don't want the toolbar to
  96. //  be dockable
  97. m_wndToolBar1.EnableDocking(CBRS_ALIGN_LEFT);
  98. EnableDocking(CBRS_ALIGN_LEFT);
  99. DockControlBar(&m_wndToolBar1);
  100. if(!m_wndDlgBar.Create(this,IDD_DIALOGBAR,CBRS_TOP|CBRS_TOOLTIPS|CBRS_FLYBY,IDD_DIALOGBAR))
  101. {
  102. TRACE0("Failed to Create DialogBarn");
  103. return -1;
  104. }
  105. m_wndDlgBar.SetDlgItemText(IDC_EDIT1,"1");
  106. CComboBox *p_Com=(CComboBox *)m_wndDlgBar.GetDlgItem(IDC_COMBO1);
  107. p_Com->ResetContent();
  108. p_Com->AddString("PS_SOLID _________");
  109. p_Com->AddString("PS_DASH __ __ __ ");
  110. p_Com->AddString("PS_DOT _ _ _ _ _");
  111. p_Com->AddString("PS_DASHDOT _ __ _ __ _ __");
  112. p_Com->AddString("PS_DASHDOTDOT _ _ __ _ _ __");
  113. p_Com->AddString("PS_NULL _________");
  114. p_Com->AddString("PS_INSIDEEFRAME _________");
  115. p_Com->SetCurSel(0);
  116. return 0;
  117. }
  118. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  119. {
  120. // TODO: Modify the Window class or styles here by modifying
  121. //  the CREATESTRUCT cs
  122. return CMDIFrameWnd::PreCreateWindow(cs);
  123. }
  124. /////////////////////////////////////////////////////////////////////////////
  125. // CMainFrame diagnostics
  126. #ifdef _DEBUG
  127. void CMainFrame::AssertValid() const
  128. {
  129. CMDIFrameWnd::AssertValid();
  130. }
  131. void CMainFrame::Dump(CDumpContext& dc) const
  132. {
  133. CMDIFrameWnd::Dump(dc);
  134. }
  135. #endif //_DEBUG
  136. /////////////////////////////////////////////////////////////////////////////
  137. // CMainFrame message handlers
  138. void CMainFrame::OnEditCut() 
  139. {
  140. CDrawDoc *pDoc=(CDrawDoc *)GetActiveDocument();
  141. CDrawView* pView=(CDrawView *)GetActiveView();
  142. pView->Invalidate();
  143. // float x=pDoc->n_GraphSelect;
  144. // TODO: Add your command handler code here
  145. }
  146. void CMainFrame::OnViewToolbar1() 
  147. {
  148. // TODO: Add your command handler code here
  149. BOOL bVisible=((m_wndToolBar1.GetStyle()&WS_VISIBLE)!=0);
  150. ShowControlBar(&m_wndToolBar1,!bVisible,FALSE);
  151. RecalcLayout();
  152. }
  153. void CMainFrame::OnUpdateViewToolbar1(CCmdUI* pCmdUI) 
  154. {
  155. BOOL bVisible=((m_wndToolBar1.GetStyle()&WS_VISIBLE)!=0);
  156. pCmdUI->SetCheck(bVisible);
  157. }
  158. void CMainFrame::OnWindowNew() 
  159. {
  160. // TODO: Add your command handler code here
  161. CMDIChildWnd* pActiveChild = MDIGetActive();
  162. CDocument* pDocument;
  163. if (pActiveChild == NULL ||
  164.   (pDocument = pActiveChild->GetActiveDocument()) == NULL)
  165. {
  166. TRACE0("Warning: No active document for WindowNew command.n");
  167. AfxMessageBox(AFX_IDP_COMMAND_FAILURE);
  168. return;     // command failed
  169. }
  170. CDrawApp* pApp=(CDrawApp*)AfxGetApp();
  171. CDocTemplate* pTemplate =pApp->GetDocTemplate1();
  172. ASSERT_VALID(pTemplate);
  173. CFrameWnd* pFrame =pTemplate->CreateNewFrame(pDocument, pActiveChild);
  174. if (pFrame == NULL)
  175. {
  176. TRACE0("Warning: failed to create new frame.n");
  177. return;     // command failed
  178. }
  179. pTemplate->InitialUpdateFrame(pFrame, pDocument);
  180. }
  181. void CMainFrame::OnViewDatabase() 
  182. {
  183. CMDIChildWnd* pActiveChild = MDIGetActive();
  184. CDocument* pDocument;
  185. if (pActiveChild == NULL ||
  186.   (pDocument = pActiveChild->GetActiveDocument()) == NULL)
  187. {
  188. TRACE0("Warning: No active document for WindowNew command.n");
  189. AfxMessageBox(AFX_IDP_COMMAND_FAILURE);
  190. return;     // command failed
  191. }
  192. CDrawApp* pApp=(CDrawApp*)AfxGetApp();
  193. CDocTemplate* pTemplate =pApp->GetDocTemplate1();
  194. ASSERT_VALID(pTemplate);
  195. CFrameWnd* pFrame =pTemplate->CreateNewFrame(pDocument, pActiveChild);
  196. if (pFrame == NULL)
  197. {
  198. TRACE0("Warning: failed to create new frame.n");
  199. return;     // command failed
  200. }
  201. pTemplate->InitialUpdateFrame(pFrame, pDocument);
  202. }