oclient.cpp
上传用户:biuytresa
上传日期:2007-12-07
资源大小:721k
文件大小:4k
源码类别:

DNA

开发平台:

Visual C++

  1. // oclient.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 <stddef.h>
  14. #include "oclient.h"
  15. #include "frame.h"
  16. #include "maindoc.h"
  17. #include "mainview.h"
  18. #include "splitfra.h"
  19. #ifdef _DEBUG
  20. #undef THIS_FILE
  21. static char BASED_CODE THIS_FILE[] = __FILE__;
  22. #endif
  23. /////////////////////////////////////////////////////////////////////////////
  24. // The one and only COleClientApp object
  25. COleClientApp NEAR theApp;
  26. // this is the GUID for OCLIENT documents
  27. static const GUID BASED_CODE clsid =
  28. { 0x00021842, 0, 0, { 0xC0, 0, 0, 0, 0, 0, 0, 0x46 } };
  29. /////////////////////////////////////////////////////////////////////////////
  30. // COleClientApp
  31. BEGIN_MESSAGE_MAP(COleClientApp, CWinApp)
  32. //{{AFX_MSG_MAP(COleClientApp)
  33. ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
  34. //}}AFX_MSG_MAP
  35. // Standard file based document commands
  36. ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
  37. ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
  38. // Standard print setup command
  39. ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
  40. // Global help commands
  41. ON_COMMAND(ID_HELP_INDEX, CWinApp::OnHelpIndex)
  42. ON_COMMAND(ID_HELP_USING, CWinApp::OnHelpUsing)
  43. ON_COMMAND(ID_HELP, CWinApp::OnHelp)
  44. ON_COMMAND(ID_DEFAULT_HELP, CWinApp::OnHelpIndex)
  45. ON_COMMAND(ID_CONTEXT_HELP, CWinApp::OnContextHelp)
  46. END_MESSAGE_MAP()
  47. /////////////////////////////////////////////////////////////////////////////
  48. // COleClientApp construction
  49. // Place all significant initialization in InitInstance
  50. COleClientApp::COleClientApp()
  51. {
  52. }
  53. /////////////////////////////////////////////////////////////////////////////
  54. // COleClientApp initialization
  55. BOOL COleClientApp::InitInstance()
  56. {
  57. #if defined(_DEBUG) && !defined(_AFX_NO_DEBUG_CRT)
  58. // turn on extra memory tracking
  59. afxMemDF |= checkAlwaysMemDF;
  60. #endif
  61. // Initialize OLE 2.0 libraries
  62. if (!AfxOleInit())
  63. {
  64. AfxMessageBox(IDP_AFXOLEINIT_FAILED);
  65. return FALSE;
  66. }
  67. // Standard initialization
  68. Enable3dControls();    // enable 3d controls in dialogs
  69. LoadStdProfileSettings();  // Load standard INI file options (including MRU)
  70. // Register document templates
  71. CMultiDocTemplate* pDocTemplate = new CMultiDocTemplate(IDR_OCLIENTTYPE,
  72. RUNTIME_CLASS(CMainDoc),
  73. RUNTIME_CLASS(CSplitFrame),
  74. RUNTIME_CLASS(CMainView));
  75. pDocTemplate->SetContainerInfo(IDR_OCLIENTTYPE_CNTR_IP);
  76. AddDocTemplate(pDocTemplate);
  77. // create main MDI Frame window
  78. CMainFrame* pMainFrame = new CMainFrame;
  79. if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
  80. return FALSE;
  81. m_pMainWnd = pMainFrame;
  82. // enable file manager drag/drop and DDE Execute open
  83. m_pMainWnd->DragAcceptFiles();
  84. EnableShellOpen();
  85. RegisterShellFileTypes(TRUE);
  86. // connect the COleTemplate server to the document template
  87. m_server.ConnectTemplate(clsid, pDocTemplate, FALSE);
  88. COleTemplateServer::RegisterAll();
  89. // Note: MDI applications register all class objects regardless of
  90. //  the /Embedding on the command line.
  91. // Parse command line for standard shell commands, DDE, file open
  92. CCommandLineInfo cmdInfo;
  93. ParseCommandLine(cmdInfo);
  94. if (RunEmbedded())
  95. {
  96. // application was run with /Embedding flag.  Instead of showing
  97. //  the window, the application waits to receive OLE requests.
  98. return TRUE;
  99. }
  100. // always update system registry when run non-embedded
  101. m_server.UpdateRegistry(OAT_CONTAINER);
  102. // Dispatch commands specified on the command line
  103. if (!ProcessShellCommand(cmdInfo))
  104. return FALSE;
  105. pMainFrame->ShowWindow(m_nCmdShow);
  106. pMainFrame->UpdateWindow();
  107. return TRUE;
  108. }
  109. /////////////////////////////////////////////////////////////////////////////
  110. // COleClientApp commands
  111. void COleClientApp::OnAppAbout()
  112. {
  113. CDialog(IDD_ABOUTBOX).DoModal();
  114. }