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

Windows编程

开发平台:

Visual C++

  1. // hiersvr.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-1998 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 related
  9. // electronic 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 "hiersvr.h"
  14. #include "mainfrm.h"
  15. #include "ipframe.h"
  16. #include "svrdoc.h"
  17. #include "svrview.h"
  18. #ifdef _DEBUG
  19. #undef THIS_FILE
  20. static char BASED_CODE THIS_FILE[] = __FILE__;
  21. #endif
  22. /////////////////////////////////////////////////////////////////////////////
  23. // CServerApp
  24. BEGIN_MESSAGE_MAP(CServerApp, CWinApp)
  25. //{{AFX_MSG_MAP(CServerApp)
  26. ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
  27. //}}AFX_MSG_MAP
  28. // Standard file based document commands
  29. ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
  30. ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
  31. END_MESSAGE_MAP()
  32. /////////////////////////////////////////////////////////////////////////////
  33. // CServerApp construction
  34. // Place all significant initialization in InitInstance
  35. CServerApp::CServerApp()
  36. {
  37. }
  38. /////////////////////////////////////////////////////////////////////////////
  39. // The one and only CServerApp object
  40. CServerApp theApp;
  41. // this is the GUID for HIERSVR documents
  42. static const GUID BASED_CODE clsid =
  43. { 0x00021841, 0, 0, { 0xC0, 0, 0, 0, 0, 0, 0, 0x46 } };
  44. /////////////////////////////////////////////////////////////////////////////
  45. //
  46. CHierSvrDocTemplate::CHierSvrDocTemplate()
  47. : CMultiDocTemplate(IDR_HIERSVRTYPE,
  48. RUNTIME_CLASS(CServerDoc),
  49. RUNTIME_CLASS(CMDIChildWnd), // standard MDI child frame
  50. RUNTIME_CLASS(CServerView))
  51. {
  52. }
  53. CDocTemplate::Confidence CHierSvrDocTemplate::MatchDocType(LPCTSTR lpszPathName,
  54. CDocument*& rpDocMatch)
  55. {
  56. CDocTemplate::Confidence ret;
  57. ret = CMultiDocTemplate::MatchDocType(lpszPathName, rpDocMatch);
  58. if (ret == CDocTemplate::yesAttemptForeign)
  59. ret = CDocTemplate::noAttempt;
  60. return ret;
  61. }
  62. /////////////////////////////////////////////////////////////////////////////
  63. // CServerApp initialization
  64. BOOL CServerApp::InitInstance()
  65. {
  66. #ifdef _DEBUG
  67. // turn on extra memory tracking
  68. afxMemDF |= checkAlwaysMemDF;
  69. #endif
  70. // OLE 2.0 initialization
  71. if (!AfxOleInit())
  72. {
  73. AfxMessageBox(IDP_AFXOLEINIT_FAILED);
  74. return FALSE;
  75. }
  76. // Standard initialization
  77. Enable3dControls();
  78. LoadStdProfileSettings();
  79. // Register document templates
  80. CDocTemplate* pDocTemplate;
  81. pDocTemplate = new CHierSvrDocTemplate;
  82. pDocTemplate->SetServerInfo(
  83. IDR_HIERSVRTYPE_SRVR_EMB, IDR_HIERSVRTYPE_SRVR_IP,
  84. RUNTIME_CLASS(CInPlaceFrame), RUNTIME_CLASS(CServerView));
  85. AddDocTemplate(pDocTemplate);
  86. // create main MDI Frame window
  87. CMainFrame* pMainFrame = new CMainFrame;
  88. if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
  89. return FALSE;
  90. m_pMainWnd = pMainFrame;
  91. // enable file manager drag/drop and DDE Execute open
  92. m_pMainWnd->DragAcceptFiles();
  93. EnableShellOpen();
  94. // connect the COleTemplate server to the document template
  95. m_server.ConnectTemplate(clsid, pDocTemplate, FALSE);
  96. COleTemplateServer::RegisterAll();
  97. // Note: MDI applications register all class objects regardless of
  98. //  the /Embedding on the command line.
  99. // Parse command line for standard shell commands, DDE, file open
  100. CCommandLineInfo cmdInfo;
  101. ParseCommandLine(cmdInfo);
  102. // try to launch as an OLE server
  103. if (cmdInfo.m_bRunEmbedded)
  104. {
  105. // application was run with /Embedding flag.  Instead of showing
  106. //  the window, the application waits to receive OLE requests.
  107. return TRUE;
  108. }
  109. m_server.UpdateRegistry();
  110. RegisterShellFileTypes(TRUE);
  111. COleObjectFactory::UpdateRegistryAll();
  112. // Dispatch commands specified on the command line
  113. if (!ProcessShellCommand(cmdInfo))
  114. return FALSE;
  115. pMainFrame->ShowWindow(m_nCmdShow);
  116. pMainFrame->UpdateWindow();
  117. return TRUE;
  118. }
  119. int CServerApp::ExitInstance()
  120. {
  121. return CWinApp::ExitInstance();
  122. }
  123. /////////////////////////////////////////////////////////////////////////////
  124. // CAboutDlg dialog used for App About
  125. class CAboutDlg : public CDialog
  126. {
  127. public:
  128. CAboutDlg() : CDialog(CAboutDlg::IDD)
  129. {
  130. //{{AFX_DATA_INIT(CAboutDlg)
  131. //}}AFX_DATA_INIT
  132. }
  133. // Dialog Data
  134. //{{AFX_DATA(CAboutDlg)
  135. enum { IDD = IDD_ABOUTBOX };
  136. //}}AFX_DATA
  137. // Implementation
  138. protected:
  139. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  140. //{{AFX_MSG(CAboutDlg)
  141. // No message handlers
  142. //}}AFX_MSG
  143. DECLARE_MESSAGE_MAP()
  144. };
  145. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  146. {
  147. CDialog::DoDataExchange(pDX);
  148. //{{AFX_DATA_MAP(CAboutDlg)
  149. //}}AFX_DATA_MAP
  150. }
  151. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  152. //{{AFX_MSG_MAP(CAboutDlg)
  153. // No message handlers
  154. //}}AFX_MSG_MAP
  155. END_MESSAGE_MAP()
  156. // App command to run the dialog
  157. void CServerApp::OnAppAbout()
  158. {
  159. CAboutDlg aboutDlg;
  160. aboutDlg.DoModal();
  161. }
  162. /////////////////////////////////////////////////////////////////////////////
  163. // CServerApp commands