MAINFRM.CPP
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:5k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  2. //
  3. // This is a part of the Microsoft Foundation Classes and
  4. // Templates (MFC&T).
  5. // Copyright (C) 1998 Microsoft Corporation
  6. // All rights reserved.
  7. //
  8. // This source code is only intended as a supplement to the
  9. // MFC&T Reference and related electronic documentation provided
  10. // with the library.  See these sources for detailed information
  11. // regarding the MFC&T product.
  12. //
  13. #include "stdafx.h"
  14. #include "DBViewer.h"
  15. #include "OptionDg.h"
  16. #include "MainFrm.h"
  17. #ifdef _DEBUG
  18. #define new DEBUG_NEW
  19. #undef THIS_FILE
  20. static char THIS_FILE[] = __FILE__;
  21. #endif
  22. /////////////////////////////////////////////////////////////////////////////
  23. // CMainFrame
  24. IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
  25. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
  26. //{{AFX_MSG_MAP(CMainFrame)
  27. ON_WM_CREATE()
  28. ON_COMMAND(ID_VIEW_OPTIONS, OnViewOptions)
  29. ON_COMMAND(ID_APP_CLONE, OnAppClone)
  30. //}}AFX_MSG_MAP
  31. END_MESSAGE_MAP()
  32. static UINT indicators[] =
  33. {
  34. ID_SEPARATOR,           // status line indicator
  35. ID_INDICATOR_CAPS,
  36. ID_INDICATOR_NUM,
  37. ID_INDICATOR_SCRL,
  38. };
  39. /////////////////////////////////////////////////////////////////////////////
  40. // CMainFrame construction/destruction
  41. CMainFrame::CMainFrame()
  42. {
  43. // TODO: add member initialization code here
  44. }
  45. CMainFrame::~CMainFrame()
  46. {
  47. }
  48. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  49. {
  50. if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  51. return -1;
  52. if (!m_wndToolBar.Create(this) ||
  53. !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
  54. {
  55. TRACE0("Failed to create toolbarn");
  56. return -1;      // fail to create
  57. }
  58. if (!m_wndStatusBar.Create(this) ||
  59. !m_wndStatusBar.SetIndicators(indicators,
  60.   sizeof(indicators)/sizeof(UINT)))
  61. {
  62. TRACE0("Failed to create status barn");
  63. return -1;      // fail to create
  64. }
  65. // TODO: Remove this if you don't want tool tips or a resizeable toolbar
  66. m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
  67. CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
  68. // TODO: Delete these three lines if you don't want the toolbar to
  69. //  be dockable
  70. m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
  71. EnableDocking(CBRS_ALIGN_ANY);
  72. DockControlBar(&m_wndToolBar);
  73. return 0;
  74. }
  75. BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/,
  76. CCreateContext* pContext)
  77. {
  78. // create a splitter with 1 row, 2 columns
  79. if (!m_wndSplitter.CreateStatic(this, 1, 2))
  80. {
  81. TRACE0("Failed to CreateStaticSplittern");
  82. return FALSE;
  83. }
  84. // add the first splitter pane - the default view in column 0
  85. if (!m_wndSplitter.CreateView(0, 0,
  86. pContext->m_pNewViewClass, CSize(200, 50), pContext))
  87. {
  88. TRACE0("Failed to create first panen");
  89. return FALSE;
  90. }
  91. // add the second splitter pane - an input view in column 1
  92. if (!m_wndSplitter.CreateView(0, 1,
  93. RUNTIME_CLASS(CDBListView), CSize(0, 0), pContext))
  94. {
  95. TRACE0("Failed to create second panen");
  96. return FALSE;
  97. }
  98. // activate the input view
  99. SetActiveView((CView*)m_wndSplitter.GetPane(0,1));
  100. return TRUE;
  101. }
  102. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  103. {
  104. // TODO: Modify the Window class or styles here by modifying
  105. //  the CREATESTRUCT cs
  106. return CFrameWnd::PreCreateWindow(cs);
  107. }
  108. /////////////////////////////////////////////////////////////////////////////
  109. // CMainFrame diagnostics
  110. #ifdef _DEBUG
  111. void CMainFrame::AssertValid() const
  112. {
  113. CFrameWnd::AssertValid();
  114. }
  115. void CMainFrame::Dump(CDumpContext& dc) const
  116. {
  117. CFrameWnd::Dump(dc);
  118. }
  119. #endif //_DEBUG
  120. /////////////////////////////////////////////////////////////////////////////
  121. // CMainFrame message handlers
  122. void CMainFrame::OnViewOptions()
  123. {
  124. CPropertySheet propSheet(_T("DaoView - Options"));
  125. COptionsDlg pageOptions;
  126. propSheet.AddPage(&pageOptions);
  127. CDBViewApp* pApp = (CDBViewApp *)AfxGetApp();
  128. pageOptions.m_bShowWarnings = pApp->m_bShowWarnings;
  129. pageOptions.m_bShowSystemObjects = pApp->m_bShowSystemObjects;
  130. pageOptions.m_bOpenODBC= pApp->m_bOpenODBC;
  131. pageOptions.m_nMaxRecords= pApp->m_nMaxRecords;
  132. if (propSheet.DoModal() == IDOK)
  133. {
  134. BOOL bRebuildList = FALSE;
  135. if (pApp->m_bShowSystemObjects != pageOptions.m_bShowSystemObjects)
  136. bRebuildList = TRUE;
  137. pApp->m_bShowSystemObjects = pageOptions.m_bShowSystemObjects;
  138. if (bRebuildList)
  139. ((CDBViewDoc*) GetActiveDocument())->RefreshViews();
  140. pApp->m_bShowWarnings = pageOptions.m_bShowWarnings;
  141. pApp->m_bOpenODBC = pageOptions.m_bOpenODBC;
  142. pApp->m_nMaxRecords = pageOptions.m_nMaxRecords;
  143. }
  144. }
  145. void CMainFrame::OnAppClone()
  146. {
  147. STARTUPINFO si;
  148. PROCESS_INFORMATION pi;
  149. // Initialize the STARTUPINFO structure.
  150. memset(&si, 0, sizeof(si));
  151. si.cb = sizeof(si);
  152. CreateProcess(
  153. NULL,   // pointer to name of executable module
  154. (LPTSTR) AfxGetApp()->m_pszAppName, // pointer to command line string
  155. NULL,   // pointer to process security attributes
  156. NULL,   // pointer to thread security attributes
  157. FALSE,  // handle inheritance flag
  158. 0,      // creation flags
  159. NULL,   // pointer to new environment block
  160. NULL,   // pointer to current directory name
  161. &si,    // pointer to STARTUPINFO
  162. &pi     // pointer to PROCESS_INFORMATION
  163.    );
  164. }