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

Windows编程

开发平台:

Visual C++

  1. // $$root$$.cpp : Defines the class behaviors for the application.
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1995 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and Microsoft
  9. // QuickHelp and/or WinHelp documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12. #include "stdafx.h"
  13. #include "$$root$$.h"
  14. $$IF(WANTS_TEXTVIEW)
  15. #include "textview.h"
  16. $$ENDIF //WANTS_TEXTVIEW
  17. #include "mainfrm.h"
  18. #include "ipframe.h"
  19. #include "svrdoc.h"
  20. #include "svrview.h"
  21. #ifdef _DEBUG
  22. #undef THIS_FILE
  23. static char BASED_CODE THIS_FILE[] = __FILE__;
  24. #endif
  25. /////////////////////////////////////////////////////////////////////////////
  26. // CServerApp
  27. BEGIN_MESSAGE_MAP(CServerApp, CWinApp)
  28. //{{AFX_MSG_MAP(CServerApp)
  29. ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
  30. //}}AFX_MSG_MAP
  31. // Standard file based document commands
  32. ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
  33. ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
  34. END_MESSAGE_MAP()
  35. /////////////////////////////////////////////////////////////////////////////
  36. // CServerApp construction
  37. // Place all significant initialization in InitInstance
  38. CServerApp::CServerApp()
  39. {
  40. }
  41. /////////////////////////////////////////////////////////////////////////////
  42. // The one and only CServerApp object
  43. CServerApp NEAR theApp;
  44. // this is the GUID for HIERSVR documents
  45. static const GUID BASED_CODE clsid =
  46. { 0x00021821, 0, 0, { 0xC0, 0, 0, 0, 0, 0, 0, 0x46 } };
  47. /////////////////////////////////////////////////////////////////////////////
  48. // CServerApp initialization
  49. BOOL CServerApp::InitInstance()
  50. {
  51. CString Commandline ;
  52. #ifdef _DEBUG
  53. // turn on extra memory tracking
  54. afxMemDF |= checkAlwaysMemDF;
  55. #endif
  56. // OLE 2.0 initialization
  57. if (!AfxOleInit())
  58. {
  59. AfxMessageBox(IDP_AFXOLEINIT_FAILED);
  60. return FALSE;
  61. }
  62. $$IF(USER_INPUT_DATA)
  63. // Sample document
  64. m_iWantDefDoc = TRUE ;
  65. m_DefaultDoc = "$$root$$.txt" ;
  66. $$ENDIF //USER_INPUT_DATA
  67. $$IF(OPEN_FILE)
  68. m_DefaultDoc = "$$hiersample$$" ;
  69. Commandline = m_lpCmdLine ;
  70. if(Commandline.IsEmpty())
  71. Commandline = m_DefaultDoc ;
  72. $$ENDIF //OPEN_FILE
  73. // Standard initialization
  74. Enable3dControls();
  75. LoadStdProfileSettings();
  76. // Register document templates
  77. pDocTemplate = new CMultiDocTemplate(IDR_HIERSVRTYPE,
  78. RUNTIME_CLASS(CServerDoc),
  79. RUNTIME_CLASS(CMDIChildWnd),    // standard MDI child frame
  80. RUNTIME_CLASS(CServerView));
  81. $$IF(WANTS_TEXTVIEW)
  82. // Add a CEditview
  83. pDocTxtTemplate = new CMultiDocTemplate(IDR_HIERSVRTYPE,
  84. RUNTIME_CLASS(CServerDoc),
  85. RUNTIME_CLASS(CMDIChildWnd),    // standard MDI child frame
  86. RUNTIME_CLASS(CTextView));
  87. $$ENDIF
  88. pDocTemplate->SetServerInfo(
  89. IDR_HIERSVRTYPE_SRVR_EMB, IDR_HIERSVRTYPE_SRVR_IP,
  90. RUNTIME_CLASS(CInPlaceFrame), RUNTIME_CLASS(CServerView));
  91. AddDocTemplate(pDocTemplate);
  92. $$IF(WANTS_TEXTVIEW)
  93. AddDocTemplate(pDocTxtTemplate) ;
  94. $$ENDIF
  95. // create main MDI Frame window
  96. CMainFrame* pMainFrame = new CMainFrame;
  97. if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
  98. return FALSE;
  99. m_pMainWnd = pMainFrame;
  100. // enable file manager drag/drop and DDE Execute open
  101. m_pMainWnd->DragAcceptFiles();
  102. EnableShellOpen();
  103. // connect the COleTemplate server to the document template
  104. m_server.ConnectTemplate(clsid, pDocTemplate, FALSE);
  105. COleTemplateServer::RegisterAll();
  106. // Note: MDI applications register all class objects regardless of
  107. //  the /Embedding on the command line.
  108. // try to launch as an OLE server
  109. if (RunEmbedded())
  110. {
  111. // application was run with /Embedding flag.  Instead of showing
  112. //  the window, the application waits to receive OLE requests.
  113. return TRUE;
  114. }
  115. m_server.UpdateRegistry();
  116. RegisterShellFileTypes();
  117. if (Commandline.IsEmpty())
  118. {
  119. // create a new (empty) document using the default view.
  120. pDocTemplate->OpenDocumentFile(NULL);
  121. $$IF(USER_INPUT_DATA)
  122. CServerView * pSrvView = (CServerView *)((pMainFrame->GetActiveFrame()))->GetActiveView() ;
  123. pSrvView->OpenTextFile(m_DefaultDoc) ;
  124. //Display a text view and tile the windows.
  125. pSrvView->CreateTextView() ;
  126. pMainFrame->MDITile() ;
  127. $$ENDIF //USER_INPUT_DATA
  128. }
  129. else
  130. {
  131. // open an existing document
  132. OpenDocumentFile(Commandline);
  133. $$IF(WANTS_TEXTVIEW)
  134. //Display a text view and tile the windows.
  135. CServerView * pSrvView = (CServerView *)((pMainFrame->GetActiveFrame()))->GetActiveView() ;
  136. pSrvView->CreateTextView() ;
  137. pMainFrame->MDITile() ;
  138. $$ENDIF
  139. }
  140. pMainFrame->ShowWindow(m_nCmdShow);
  141. pMainFrame->UpdateWindow();
  142. return TRUE;
  143. }
  144. int CServerApp::ExitInstance()
  145. {
  146. return CWinApp::ExitInstance();
  147. }
  148. /////////////////////////////////////////////////////////////////////////////
  149. // CAboutDlg dialog used for App About
  150. class CAboutDlg : public CDialog
  151. {
  152. public:
  153. CAboutDlg() : CDialog(CAboutDlg::IDD)
  154. {
  155. //{{AFX_DATA_INIT(CAboutDlg)
  156. //}}AFX_DATA_INIT
  157. }
  158. // Dialog Data
  159. //{{AFX_DATA(CAboutDlg)
  160. enum { IDD = IDD_ABOUTBOX };
  161. //}}AFX_DATA
  162. // Implementation
  163. protected:
  164. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  165. //{{AFX_MSG(CAboutDlg)
  166. // No message handlers
  167. //}}AFX_MSG
  168. DECLARE_MESSAGE_MAP()
  169. };
  170. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  171. {
  172. CDialog::DoDataExchange(pDX);
  173. //{{AFX_DATA_MAP(CAboutDlg)
  174. //}}AFX_DATA_MAP
  175. }
  176. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  177. //{{AFX_MSG_MAP(CAboutDlg)
  178. // No message handlers
  179. //}}AFX_MSG_MAP
  180. END_MESSAGE_MAP()
  181. // App command to run the dialog
  182. void CServerApp::OnAppAbout()
  183. {
  184. CAboutDlg aboutDlg;
  185. aboutDlg.DoModal();
  186. }
  187. /////////////////////////////////////////////////////////////////////////////
  188. // CServerApp commands