327 lines
8.5 KiB
C++
327 lines
8.5 KiB
C++
|
//Copyright (c) 1998 - 1999 Microsoft Corporation
|
||
|
/*******************************************************************************
|
||
|
*
|
||
|
* mainfrm.cpp
|
||
|
*
|
||
|
* implementation of CMainFrame class
|
||
|
*
|
||
|
* copyright notice: Copyright 1994, Citrix Systems Inc.
|
||
|
*
|
||
|
* $Author: butchd $ Butch Davis
|
||
|
*
|
||
|
* $Log: N:\NT\PRIVATE\UTILS\CITRIX\WINUTILS\WINCFG\VCS\MAINFRM.CPP $
|
||
|
*
|
||
|
* Rev 1.5 27 Sep 1996 17:52:30 butchd
|
||
|
* update
|
||
|
*
|
||
|
* Rev 1.4 24 Sep 1996 16:21:46 butchd
|
||
|
* update
|
||
|
*
|
||
|
*******************************************************************************/
|
||
|
|
||
|
#include "stdafx.h"
|
||
|
#include "wincfg.h"
|
||
|
|
||
|
#include "mainfrm.h"
|
||
|
#include "appsvdoc.h"
|
||
|
|
||
|
#ifdef _DEBUG
|
||
|
#undef THIS_FILE
|
||
|
static char BASED_CODE THIS_FILE[] = __FILE__;
|
||
|
#endif
|
||
|
|
||
|
extern CWincfgApp *pApp;
|
||
|
|
||
|
/*
|
||
|
* Global command line variables.
|
||
|
*/
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CMainFrame class implementation / construction, destruction
|
||
|
|
||
|
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
|
||
|
|
||
|
/*******************************************************************************
|
||
|
*
|
||
|
* CMainFrame - CMainFrame constructor
|
||
|
*
|
||
|
* ENTRY:
|
||
|
* EXIT:
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
|
||
|
CMainFrame::CMainFrame()
|
||
|
{
|
||
|
} // end CMainFrame::CMainFrame
|
||
|
|
||
|
|
||
|
/*******************************************************************************
|
||
|
*
|
||
|
* ~CMainFrame - CMainFrame destructor
|
||
|
*
|
||
|
* ENTRY:
|
||
|
* EXIT:
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
|
||
|
CMainFrame::~CMainFrame()
|
||
|
{
|
||
|
pApp->Terminate();
|
||
|
} // end CMainFrame::~CMainFrame
|
||
|
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CMainFrame debug diagnostics
|
||
|
|
||
|
#ifdef _DEBUG
|
||
|
void CMainFrame::AssertValid() const
|
||
|
{
|
||
|
CFrameWnd::AssertValid();
|
||
|
}
|
||
|
|
||
|
void CMainFrame::Dump(CDumpContext& dc) const
|
||
|
{
|
||
|
CFrameWnd::Dump(dc);
|
||
|
}
|
||
|
#endif //_DEBUG
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CMainFrame Overrides of MFC CFrameWnd class
|
||
|
|
||
|
/*******************************************************************************
|
||
|
*
|
||
|
* ActivateFrame - CMainFrame member function: override
|
||
|
*
|
||
|
* Place and show the main frame window.
|
||
|
*
|
||
|
* ENTRY:
|
||
|
* nCmdShow (input)
|
||
|
* Default application 'show' state.
|
||
|
*
|
||
|
* EXIT:
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
|
||
|
void
|
||
|
CMainFrame::ActivateFrame(int nCmdShow)
|
||
|
{
|
||
|
if ( g_Batch ) {
|
||
|
|
||
|
/*
|
||
|
* Always hide our main window if we're in batch mode.
|
||
|
*/
|
||
|
ShowWindow(SW_HIDE);
|
||
|
|
||
|
} else {
|
||
|
|
||
|
if ( pApp->m_Placement.length == -1 ) {
|
||
|
|
||
|
/*
|
||
|
* This is the first time that this is called, set the window
|
||
|
* placement and show state to the previously saved state.
|
||
|
*/
|
||
|
pApp->m_Placement.length = sizeof(pApp->m_Placement);
|
||
|
|
||
|
/*
|
||
|
* If we're in batch mode, make window hidden.
|
||
|
*/
|
||
|
if ( g_Batch )
|
||
|
nCmdShow = SW_HIDE;
|
||
|
|
||
|
/*
|
||
|
* If we have a previously saved placement state: set it.
|
||
|
*/
|
||
|
if ( pApp->m_Placement.rcNormalPosition.right != -1 ) {
|
||
|
|
||
|
if ( nCmdShow != SW_SHOWNORMAL )
|
||
|
pApp->m_Placement.showCmd = nCmdShow;
|
||
|
else
|
||
|
nCmdShow = pApp->m_Placement.showCmd;
|
||
|
|
||
|
SetWindowPlacement(&(pApp->m_Placement));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* Perform the parent classes' ActivateFrame().
|
||
|
*/
|
||
|
CFrameWnd::ActivateFrame(nCmdShow);
|
||
|
}
|
||
|
|
||
|
} // end CMainFrame::ActivateFrame
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CMainFrame message map
|
||
|
|
||
|
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
|
||
|
//{{AFX_MSG_MAP(CMainFrame)
|
||
|
//ON_WM_CLOSE()
|
||
|
ON_WM_INITMENUPOPUP()
|
||
|
ON_WM_SYSCOMMAND()
|
||
|
ON_UPDATE_COMMAND_UI(ID_APP_EXIT, OnUpdateAppExit)
|
||
|
ON_MESSAGE(WM_ADDWINSTATION, OnAddWinstation)
|
||
|
//}}AFX_MSG_MAP
|
||
|
END_MESSAGE_MAP()
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CMainFrame message handlers
|
||
|
|
||
|
/*******************************************************************************
|
||
|
*
|
||
|
* OnClose - CMainFrame member function: command
|
||
|
*
|
||
|
* Save application defaults and clean-up, then perform default
|
||
|
* OnClose
|
||
|
*
|
||
|
* ENTRY:
|
||
|
* EXIT:
|
||
|
* (refer to the CWnd::OnClose documentation)
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
//void
|
||
|
//CMainFrame::OnClose()
|
||
|
//{
|
||
|
/*
|
||
|
* Call CWinquery::Terminate member function to save application defaults
|
||
|
* and clean-up.
|
||
|
*/
|
||
|
// pApp->Terminate();
|
||
|
|
||
|
/*
|
||
|
* Call the default OnClose() member function.
|
||
|
*/
|
||
|
//CFrameWnd::OnClose();
|
||
|
|
||
|
//} // end CMainFrame::OnClose
|
||
|
|
||
|
|
||
|
/*******************************************************************************
|
||
|
*
|
||
|
* OnInitMenuPopup - CMainFrame member function: command
|
||
|
*
|
||
|
* When the system control menu is about to be displayed, set the state of
|
||
|
* the "close" item to allow or disallow closing the application.
|
||
|
*
|
||
|
* ENTRY:
|
||
|
* EXIT:
|
||
|
* (refer to the CWnd::OnInitMenuPopup documentation)
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
|
||
|
void
|
||
|
CMainFrame::OnInitMenuPopup( CMenu* pPopupMenu,
|
||
|
UINT nIndex,
|
||
|
BOOL bSysMenu )
|
||
|
{
|
||
|
/*
|
||
|
* Call the parent classes OnInitMenuPopup first.
|
||
|
*/
|
||
|
CFrameWnd::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu);
|
||
|
|
||
|
/*
|
||
|
* If this is the system menu, enable or disable the Close menu item based
|
||
|
* on whether our current document says that we can exit.
|
||
|
*/
|
||
|
if ( bSysMenu )
|
||
|
pPopupMenu->EnableMenuItem( SC_CLOSE, MF_BYCOMMAND |
|
||
|
(((CAppServerDoc *)GetActiveDocument())->IsExitAllowed() ? MF_ENABLED : MF_GRAYED) );
|
||
|
|
||
|
} // end CMainFrame::OnInitMenuPopup
|
||
|
|
||
|
|
||
|
/*******************************************************************************
|
||
|
*
|
||
|
* OnSysCommand - CMainFrame member function: command
|
||
|
*
|
||
|
* In case the user presses the ALT-F4 accelerator key, which can't be
|
||
|
* disabled in the OnUpdateAppExit() and OnInitMenuPopup() command
|
||
|
* functions.
|
||
|
*
|
||
|
* ENTRY:
|
||
|
* EXIT:
|
||
|
* (refer to the CWnd::OnSysCommand documentation)
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
|
||
|
void
|
||
|
CMainFrame::OnSysCommand( UINT nId,
|
||
|
LPARAM lParam )
|
||
|
{
|
||
|
|
||
|
/*
|
||
|
* If this is the SC_CLOSE command and exiting is not allowed, return.
|
||
|
*/
|
||
|
if ( (nId == SC_CLOSE) &&
|
||
|
!((CAppServerDoc *)GetActiveDocument())->IsExitAllowed() )
|
||
|
return;
|
||
|
|
||
|
/*
|
||
|
* Call the parent classes OnSysCommand() function.
|
||
|
*/
|
||
|
CFrameWnd::OnSysCommand( nId, lParam );
|
||
|
|
||
|
} // end CMainFrame::OnSysCommand
|
||
|
|
||
|
|
||
|
/*******************************************************************************
|
||
|
*
|
||
|
* OnUpdateAppExit - CMainFrame member function: command
|
||
|
*
|
||
|
* Enables or disables the "exit" command item based on whether or not
|
||
|
* we're allowed to close the application.
|
||
|
*
|
||
|
* ENTRY:
|
||
|
* pCmdUI (input)
|
||
|
* Points to the CCmdUI object of the "exit" command item.
|
||
|
*
|
||
|
* EXIT:
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
|
||
|
void
|
||
|
CMainFrame::OnUpdateAppExit(CCmdUI* pCmdUI)
|
||
|
{
|
||
|
pCmdUI->Enable( ((CAppServerDoc *)GetActiveDocument())->IsExitAllowed() ? TRUE : FALSE );
|
||
|
|
||
|
} // end CMainFrame::OnUpdateAppExit
|
||
|
|
||
|
|
||
|
/*******************************************************************************
|
||
|
*
|
||
|
* OnAddWinstation - CMainFrame member function: command
|
||
|
*
|
||
|
* Perform batch-mode add of winstation(s).
|
||
|
*
|
||
|
* ENTRY:
|
||
|
* wParam (input)
|
||
|
* WPARAM associated with the window message: not used.
|
||
|
* wLparam (input)
|
||
|
* LPARAM associated with the window message: not used.
|
||
|
*
|
||
|
* EXIT:
|
||
|
* (LRESULT) always returns 0 to indicate operation complete.
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
|
||
|
LRESULT
|
||
|
CMainFrame::OnAddWinstation( WPARAM wParam,
|
||
|
LPARAM lParam )
|
||
|
{
|
||
|
/*
|
||
|
* Call AddWinStation() in document to perform the add operation. If the
|
||
|
* add failed in any way (index <= 0), post a WM_CLOSE message
|
||
|
* to ourself so that we go away. Sucessful add will be closed when final
|
||
|
* add operaion completes (in the document's OperationDone() function).
|
||
|
*/
|
||
|
if ( ((CAppServerDoc *)GetActiveDocument())->AddWinStation(0) <= 0 )
|
||
|
PostMessage(WM_CLOSE);
|
||
|
|
||
|
return(0);
|
||
|
|
||
|
} // end CMainFrame::OnAddWinstation
|
||
|
/////////////////////////////////////////////////////////////////////////////
|