//Sample code file: var/ndk/webBuildengine/tmp/viewable_samples/c5607871-120e-404c-9042-2603fb37af10/APPT/CPP/APPT.CPP

//Warning: This code has been marked up for HTML

/***************************************************************************
$name: APPT.CPP
$version: 1.0 
$date_modified: 121498 
$description: Create and destroy application session.  This is also where we
              create our Novell GroupWare Session.
$owner: GroupWise SDK Team Lead
Copyright (c) 1998 Novell, Inc. All Rights Reserved.

THIS WORK IS SUBJECT TO U.S. AND INTERNATIONAL COPYRIGHT LAWS AND TREATIES.
USE AND REDISTRIBUTION OF THIS WORK IS SUBJECT TO THE LICENSE AGREEMENT
ACCOMPANYING THE SOFTWARE DEVELOPMENT KIT (SDK) THAT CONTAINS THIS WORK.
PURSUANT TO THE SDK LICENSE AGREEMENT, NOVELL HEREBY GRANTS TO DEVELOPER A
ROYALTY-FREE, NON-EXCLUSIVE LICENSE TO INCLUDE NOVELL'S SAMPLE CODE IN ITS
PRODUCT. NOVELL GRANTS DEVELOPER WORLDWIDE DISTRIBUTION RIGHTS TO MARKET,
DISTRIBUTE, OR SELL NOVELL'S SAMPLE CODE AS A COMPONENT OF DEVELOPER'S
PRODUCTS. NOVELL SHALL HAVE NO OBLIGATIONS TO DEVELOPER OR DEVELOPER'S
CUSTOMERS WITH RESPECT TO THIS CODE.
****************************************************************************/
#include "stdafx.h"
#include "appt.h"
#include "bsdlg.h"
#include "apptDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif



BEGIN_MESSAGE_MAP(CApptApp, CWinApp)
   //{{AFX_MSG_MAP(CApptApp)

      // NOTE - the ClassWizard will add and remove mapping macros here.

      //    DO NOT EDIT what you see in these blocks of generated code!

   //}}AFX_MSG

   ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()



/*---------------------------------------
CApptApp

NOTE:   Constructor for CApptApp object
---------------------------------------*/
CApptApp::CApptApp()
{

}



CApptApp theApp;



/*----------------------------------------------
InitInstance

NOTE:   This is where we create and initialize
      the instance of the application.
----------------------------------------------*/
BOOL CApptApp::InitInstance()
{
   // Initialize OLE libraries

   if(!AfxOleInit()) {
      AfxMessageBox(IDP_OLE_INIT_FAILED);
      return FALSE;
   }

   AfxEnableControlContainer();

   // Standard initialization

   // If you are not using these features and wish to reduce the size

   //  of your final executable, you should remove from the following

   //  the specific initialization routines you do not need.


#ifdef _AFXDLL
   Enable3dControls();         // Call this when using MFC in a shared DLL

#else
   Enable3dControlsStatic();   // Call this when linking to MFC statically

#endif

   // Parse the command line to see if launched as OLE server

   if(RunEmbedded() || RunAutomated()) {
      // Register all OLE server (factories) as running.  This enables the

      //  OLE libraries to create objects from other applications.

      COleTemplateServer::RegisterAll();

      // Application was run with /Embedding or /Automation.  Don't show the

      //  main window in this case.

      return TRUE;
   }

   // When a server application is launched stand-alone, it is a good idea

   //  to update the system registry in case it has been damaged.

   COleObjectFactory::UpdateRegistryAll();

   
   CApptDlg dlg;
   m_pMainWnd = &dlg;

   InitGWSession();
   dlg.InitAccount();
   dlg.DoModal();

   // Since the dialog has been closed, return FALSE so that we exit the

   //  application, rather than start the application's message pump.

   return FALSE;
}



/*----------------------------------------------
ExitInstance


  NOTE:   Exit application instance
-----------------------------------------------*/
int CApptApp::ExitInstance()
{
   if(m_pIGWSession)
      m_pIGWSession->Release();

   CoUninitialize();

  return 0;
}



/*------------------------------------------------------------------------
InitGWSession

  NOTE:      Initialize a new Novell GroupWare Session
-------------------------------------------------------------------------*/
BOOL CApptApp::InitGWSession()
{

   CoInitialize(NULL);

   // Create the Session Object

   if(FAILED(CoCreateInstance(CLSID_GroupWare, NULL, CLSCTX_INPROC_SERVER |
      CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER, IID_IGWSession, (void**)&m_pIGWSession))) {
         AfxMessageBox("Could not create session object"); 
         return FALSE;
   }

   return TRUE;
}