home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / C++-7 / DISK11 / MFC / SAMPLES / MINSVR / MINSVR.CP$ / minsvr
Encoding:
Text File  |  1992-03-16  |  2.3 KB  |  103 lines

  1. // This is a part of the Microsoft Foundation Classes C++ library.
  2. // Copyright (C) 1992 Microsoft Corporation
  3. // All rights reserved.
  4. //
  5. // This source code is only intended as a supplement to the
  6. // Microsoft Foundation Classes Reference and Microsoft
  7. // QuickHelp documentation provided with the library.
  8. // See these sources for detailed information regarding the
  9. // Microsoft Foundation Classes product.
  10.  
  11. #include "minsvr.h"
  12.  
  13. /////////////////////////////////////////////////////////////////////////////
  14. // One instance per client
  15.  
  16. CMinApp app;
  17.  
  18. BOOL CMinApp::InitInstance()
  19. {
  20.     BOOL bEmbedded = FALSE;
  21.  
  22.     // check if run with /Embedding
  23.     LPCSTR lpsz = m_lpCmdLine;
  24.  
  25.     while (*lpsz == ' ')
  26.         lpsz++;
  27.     if ((*lpsz == '-' || *lpsz == '/') &&
  28.         _fstrncmp("Embedding", lpsz+1, 9) == 0)
  29.     {
  30.         lpsz += 10;
  31.         bEmbedded = TRUE;
  32.     }
  33.  
  34.     if (!bEmbedded)
  35.     {
  36.         // register as a server
  37.         if (AfxOleRegisterServerName(SERVER_NAME, SERVER_LOCAL_NAME))
  38.         {
  39.             MessageBox(NULL,
  40.                 "Server Registered, please run from within host application.",
  41.                 AfxGetAppName(), MB_OK);
  42.         }
  43.         else
  44.         {
  45.             MessageBox(NULL,
  46.                 "Server failed to register, try using REGEDIT.",
  47.                 AfxGetAppName(), MB_OK);
  48.         }
  49.  
  50.         return FALSE;
  51.     }
  52.     // MinApp ignores rest of command line - normally use this as a
  53.     //   document file name
  54.  
  55.     CMainWnd* pWnd = new CMainWnd;
  56.     m_pMainWnd = pWnd;
  57.     pWnd->ShowWindow(m_nCmdShow);
  58.     pWnd->UpdateWindow();
  59.  
  60.     if (!pWnd->m_server.Register(SERVER_NAME, TRUE))
  61.          // multi-instance server
  62.     {
  63.         MessageBox(NULL, "couldn't register server", AfxGetAppName(), MB_OK);
  64.         return FALSE;
  65.     }
  66.  
  67.     return TRUE;
  68. }
  69.  
  70. int CMinApp::ExitInstance()
  71. {
  72.     // on exit, destroy the main window
  73.     if (m_pMainWnd != NULL)
  74.         VERIFY(m_pMainWnd->DestroyWindow());
  75.     return CWinApp::ExitInstance();
  76. }
  77.  
  78. /////////////////////////////////////////////////////////////////////////////
  79. // Minimum server
  80.  
  81. CMinServer::CMinServer(CMainWnd* pMainWnd)
  82.             : COleServer(TRUE), m_doc()
  83. {
  84.     m_pMainWnd = pMainWnd;
  85. }
  86.  
  87. COleServerDoc* CMinServer::OnOpenDoc(LPCSTR)
  88. {
  89.     return &m_doc;
  90. }
  91.  
  92. COleServerDoc* CMinServer::OnCreateDoc(LPCSTR, LPCSTR)
  93. {
  94.     return &m_doc;
  95. }
  96.  
  97. COleServerDoc* CMinServer::OnEditDoc(LPCSTR, LPCSTR)
  98. {
  99.     return &m_doc;
  100. }
  101.  
  102. /////////////////////////////////////////////////////////////////////////////
  103.