windows-nt/Source/XPSP1/NT/base/cluster/admin/cluadmin/extmenu.cpp

204 lines
5 KiB
C++
Raw Normal View History

2020-09-26 03:20:57 -05:00
/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1996-2000 Microsoft Corporation
//
// Module Name:
// ExtMenu.cpp
//
// Abstract:
// Implementation of the CExtMenuItem class.
//
// Author:
// David Potter (davidp) August 28, 1996
//
// Revision History:
//
// Notes:
//
/////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ExtMenu.h"
/////////////////////////////////////////////////////////////////////////////
// CExtMenuItem
/////////////////////////////////////////////////////////////////////////////
IMPLEMENT_DYNAMIC( CExtMenuItem, CObject );
/////////////////////////////////////////////////////////////////////////////
//++
//
// CExtMenuItem::CExtMenuItem
//
// Routine Description:
// Default constructor.
//
// Arguments:
// None.
//
// Return Value:
// None.
//
//--
/////////////////////////////////////////////////////////////////////////////
CExtMenuItem::CExtMenuItem( void )
{
CommonConstruct();
} //*** CExtMenuItem::CExtMenuItem()
/////////////////////////////////////////////////////////////////////////////
//++
//
// CExtMenuItem::CExtMenuItem
//
// Routine Description:
// Constructor. Caller must check range on ID and flags.
//
// Arguments:
// lpszName [IN] Name of item.
// lpszStatusBarText [IN] Text to appear on the status bar when the
// item is highlighted.
// nExtCommandID [IN] Extension's ID for the command.
// nCommandID [IN] ID for the command when menu item is invoked.
// nMenuItemID [IN] Index in the menu of the item.
// uFlags [IN] Menu flags.
// bMakeDefault [IN] TRUE = Make this item the default item.
// piCommand [IN OUT] Command interface.
//
// Return Value:
// None.
//
//--
/////////////////////////////////////////////////////////////////////////////
CExtMenuItem::CExtMenuItem(
IN LPCTSTR lpszName,
IN LPCTSTR lpszStatusBarText,
IN ULONG nExtCommandID,
IN ULONG nCommandID,
IN ULONG nMenuItemID,
IN ULONG uFlags,
IN BOOL bMakeDefault,
IN OUT IWEInvokeCommand * piCommand
)
{
CommonConstruct();
ASSERT( piCommand != NULL );
m_strName = lpszName;
m_strStatusBarText = lpszStatusBarText;
m_nExtCommandID = nExtCommandID;
m_nCommandID = nCommandID;
m_nMenuItemID = nMenuItemID;
m_uFlags = uFlags;
m_bDefault = bMakeDefault;
m_piCommand = piCommand;
// will throw its own exception if it fails
if ( uFlags & MF_POPUP )
{
m_plSubMenuItems = new CExtMenuItemList;
if ( m_plSubMenuItems == NULL )
{
AfxThrowMemoryException();
} // if: error allocating memory
} // if: popup menu
ASSERT_VALID( this );
} //*** CExtMenuItem::CExtMenuItem()
/////////////////////////////////////////////////////////////////////////////
//++
//
// CExtMenuItem::~CExtMenuItem
//
// Routine Description:
// Default constructor.
//
// Arguments:
// None.
//
// Return Value:
// None.
//
//--
/////////////////////////////////////////////////////////////////////////////
CExtMenuItem::~CExtMenuItem( void )
{
delete m_plSubMenuItems;
// Nuke data so it can't be used again
CommonConstruct();
} //*** CExtMenuItem::~CExtMenuItem()
/////////////////////////////////////////////////////////////////////////////
//++
//
// CExtMenuItem::CommonConstruct
//
// Routine Description:
// Common object construction.
//
// Arguments:
// None.
//
// Return Value:
// None.
//
//--
/////////////////////////////////////////////////////////////////////////////
void CExtMenuItem::CommonConstruct( void )
{
m_strName.Empty();
m_strStatusBarText.Empty();
m_nExtCommandID = (ULONG) -1;
m_nCommandID = (ULONG) -1;
m_nMenuItemID = (ULONG) -1;
m_uFlags = (ULONG) -1;
m_bDefault = FALSE;
m_piCommand = NULL;
m_plSubMenuItems = NULL;
m_hmenuPopup = NULL;
} //*** CExtMenuItem::CommonConstruct()
#ifdef _DEBUG
/////////////////////////////////////////////////////////////////////////////
//++
//
// CExtMenuItem::AssertValid
//
// Routine Description:
// Assert that the object is valid.
//
// Arguments:
// None.
//
// Return Value:
// None.
//
//--
/////////////////////////////////////////////////////////////////////////////
void CExtMenuItem::AssertValid( void )
{
CObject::AssertValid();
if ( ( m_nExtCommandID == -1 )
|| ( m_nCommandID == -1 )
|| ( m_nMenuItemID == -1 )
|| ( m_uFlags == -1 )
|| ( ( ( m_uFlags & MF_POPUP ) == 0 ) && ( m_plSubMenuItems != NULL ) )
|| ( ( ( m_uFlags & MF_POPUP ) != 0 ) && ( m_plSubMenuItems == NULL ) )
)
{
ASSERT( FALSE );
}
} //*** CExtMenuItem::AssertValid()
#endif