|
|
/**********************************************************************/ /** Microsoft Windows NT **/ /** Copyright(c) Microsoft Corp., 1991 **/ /**********************************************************************/
/*
cpl.cxx This module contains entry points for the Afp Manager Control Panel Applet. It contains "CplApplet" function.
FILE HISTORY: NarenG 1-Oct-1991 Stole from srvmgr.cpl.
*/
#define INCL_NET
#define INCL_NETLIB
#define INCL_NETSERVICE
#define INCL_WINDOWS
#define INCL_WINDOWS_GDI
#define INCL_NETERRORS
#define INCL_DOSERRORS
#include <lmui.hxx>
#if defined(DEBUG)
static const CHAR szFileName[] = __FILE__; #define _FILENAME_DEFINED_ONCE szFileName
#endif
#include <uiassert.hxx>
#include <uitrace.hxx>
#define INCL_BLT_WINDOW
#define INCL_BLT_DIALOG
#define INCL_BLT_CONTROL
#define INCL_BLT_CLIENT
#define INCL_BLT_MSGPOPUP
#define INCL_BLT_EVENT
#define INCL_BLT_MISC
#define INCL_BLT_TIMER
#define INCL_BLT_CC
#include <blt.hxx>
#include <dbgstr.hxx>
#include <lmoloc.hxx>
extern "C" { #include <cpl.h> // Multimedia CPL defs
#include <afpmgr.h>
#include <macfile.h>
}
#include <srvprop.hxx>
#include <startafp.hxx>
extern "C" { //
// Control Panel Applet entry point.
//
LONG FAR PASCAL CPlApplet( HWND hwndCPl, WORD nMsg, LPARAM lParam1, LPARAM lparam2 );
//
// Globals.
//
extern HINSTANCE _hInstance; // Exported by the afpmgr.cxx module.
} // extern "C"
/*******************************************************************
NAME: GetLocalServerName
SYNOPSIS: Returns the name of the current server (\\server).
ENTRY: nlsServerName - Will receive the server name.
RETURNS: APIERR - Any error encountered.
HISTORY: NarenG 1-Oct-1992 Stole from original.
********************************************************************/ APIERR GetLocalServerName( NLS_STR * nlsServerName ) { LOCATION loc( LOC_TYPE_LOCAL );
APIERR err = loc.QueryError();
if( err == NERR_Success ) { err = loc.QueryDisplayName( nlsServerName ); }
return err;
} // GetLocalServerName
/*******************************************************************
NAME: RunAfpMgr
SYNOPSIS: Invoke the main dialog of the AFP Server Manager Control Panel Applet.
ENTRY: hWnd - Window handle of parent window.
RETURNS: APIERR
HISTORY: NarenG 1-Oct-1992 Stole from original.
********************************************************************/ APIERR RunAfpMgr( HWND hWnd ) {
NLS_STR nlsServerName; BOOL fAFPRunning; APIERR err; AFP_SERVER_HANDLE hServer = NULL;
//
// This is not a loop
//
do {
if ( ( err = nlsServerName.QueryError() ) != NERR_Success ) break;
//
// Try to get the Local Server Name
//
err = GetLocalServerName( &nlsServerName );
if ( err != NERR_Success ) break;
err = IsAfpServiceRunning( nlsServerName.QueryPch(), &fAFPRunning );
if ( err != NERR_Success ) break;
//
// The server is not started.
//
if( !fAFPRunning ) {
//
// Ask the user if he/she wants to start it.
//
if ( ::MsgPopup( hWnd, IDS_START_AFPSERVER_NOW, MPSEV_WARNING, MP_YESNO, MP_YES ) == IDYES ) {
//
// Start the AFP Service
//
err = StartAfpService( hWnd, nlsServerName.QueryPch());
if ( err != NERR_Success ) break; } else { break; }
}
//
// Set up an RPC conenction with the server
//
if ( ( err = ::AfpAdminConnect( (LPWSTR)(nlsServerName.QueryPch()), &hServer ) ) != NO_ERROR ) { break; }
//
// Invoke the Main Property Dialog.
//
SERVER_PROPERTIES * pDlg = new SERVER_PROPERTIES( hWnd, hServer, nlsServerName.QueryPch() );
err = ( pDlg == NULL ) ? ERROR_NOT_ENOUGH_MEMORY : pDlg->Process();
delete pDlg;
if ( hServer != NULL ) { ::AfpAdminDisconnect( hServer ); }
} while( FALSE );
if( err != NERR_Success ) { if ( err == IDS_MACFILE_NOT_INSTALLED ) { ::MsgPopup( hWnd, err, MPSEV_ERROR, MP_OKCANCEL, nlsServerName.QueryPch(), MP_OK ); } else { ::MsgPopup( hWnd, AFPERR_TO_STRINGID(err) ); } }
return err;
} // RunAfpMgr
/*******************************************************************
NAME: CPlApplet
SYNOPSIS: Exported function to start the Server Manager Control Panel Applet.
ENTRY: hwndCPl - Window handle of parent.
nMsg - CPL user message (see CPL.H in WINDOWS\SHELL\CONTROL\H).
lParam1 - Message-specific pointer.
lParam2 - Message-specific pointer.
RETURNS: LONG
HISTORY: NarenG 1-Oct-1992 Stole from original.
********************************************************************/ LONG FAR PASCAL CPlApplet( HWND hwndCPl, WORD nMsg, LPARAM lParam1, LPARAM lParam2 ) { LPCPLINFO pCplInfo; LONG nResult = 0;
UNREFERENCED( lParam1 );
switch( nMsg ) { case CPL_INIT: //
// This message is sent to indicate that CPlApplet() was found.
//
// lParam1 and lParam2 are not used.
//
// Return TRUE if applet should be installed, FALSE otherwise.
//
return (LONG)TRUE;
case CPL_GETCOUNT: //
// This message is set to determine the number of applets contained
// in this DLL.
//
// lParam1 and lParam2 are not used.
//
// Return the number of applets contained in this DLL.
//
return 1;
case CPL_INQUIRE: //
// This message is sent once per applet to retrieve information
// about each applet.
//
// lParam1 is the applet number to register.
//
// lParam2 is a pointer to a CPLINFO structure. The CPLINFO
// structure's idIcon, idName, idInfo, and lData fields should
// be initialized as appropriate for the applet.
//
// There is no return value.
//
pCplInfo = (LPCPLINFO)lParam2;
pCplInfo->idIcon = IDI_AFPMCPA_ICON; pCplInfo->idName = IDS_AFPMCPA_NAME_STRING; pCplInfo->idInfo = IDS_AFPMCPA_INFO_STRING; pCplInfo->lData = 0L;
break;
case CPL_SELECT: //
// This message is sent when the applet's icon has been
// selected.
//
// lParam1 is the applet number that was selected.
//
// lParam2 is the applet's lData value.
//
// There is no return value.
//
break;
case CPL_DBLCLK: //
// This message is sent when the applet's icon has been
// double-clicked. This message should initiate the
// applet's dialog box.
//
// lParam1 is the applet number that was selected.
//
// lParam2 is the applet's lData value.
//
// There is no return value.
//
RunAfpMgr( hwndCPl );
break;
case CPL_STOP: //
// This message is sent once for each applet when the
// control panel is shutting down. This message should
// initiate applet specific cleanup.
//
// lParam1 is the applet number being stopped.
//
// lParam2 is the applet's lData value.
//
// There is no return value.
//
break;
case CPL_EXIT: //
// This message is sent just before the control panel calls
// FreeLibrary.
//
// lParam1 and lParam2 are not used.
//
// There is no return value.
//
break;
case CPL_NEWINQUIRE: //
// This message is basically the same as CPL_INQUIRE, except
// lParam2 points to a NEWCPLINFO structure. This message will
// be sent *before* CPL_INQUIRE. If the applet returns a non
// zero value, then CPL_INQUIRE will not be sent.
//
// lParam1 is the applet number to register.
//
// lParam2 is a pointer to a NEWCPLINFO structure.
//
// There is no return value.
//
return FALSE;
default: //
// Who knows. Ignore it.
//
break; }
return nResult;
} // CPlApplet
|