windows-nt/Source/XPSP1/NT/termsrv/admtools/winutils/tscfg/mainfrm.cpp
2020-09-26 16:20:57 +08:00

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
/////////////////////////////////////////////////////////////////////////////