windows-nt/Source/XPSP1/NT/base/cluster/admin/common/atlextmenu.h

205 lines
4.9 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1996-1998 Microsoft Corporation
//
// Module Name:
// AtlExtMenu.h
//
// Implementation File:
// AtlExtMenu.cpp
//
// Description:
// Definition of the Cluster Administrator extension menu classes.
//
// Author:
// David Potter (davidp) August 28, 1996
//
// Revision History:
//
// Notes:
//
/////////////////////////////////////////////////////////////////////////////
#ifndef __ATLEXTMENU_H_
#define __ATLEXTMENU_H_
// Required because of class names longer than 16 characters in lists.
#pragma warning( disable : 4786 ) // identifier was truncated to '255' characters ni the browser information
/////////////////////////////////////////////////////////////////////////////
// Include Files
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// Forward Class Declarations
/////////////////////////////////////////////////////////////////////////////
class CCluAdmExMenuItem;
/////////////////////////////////////////////////////////////////////////////
// External Class Declarations
/////////////////////////////////////////////////////////////////////////////
interface IWEInvokeCommand;
/////////////////////////////////////////////////////////////////////////////
// Type Definitions
/////////////////////////////////////////////////////////////////////////////
typedef std::list< CCluAdmExMenuItem * > CCluAdmExMenuItemList;
/////////////////////////////////////////////////////////////////////////////
//++
//
// class CCluAdmExMenuItem
//
// Description:
// Represents one extension DLL's menu item.
//
// Inheritance:
// CCluAdmExMenuItem
//
//--
/////////////////////////////////////////////////////////////////////////////
class CCluAdmExMenuItem
{
public:
//
// Constructors.
//
// Default constructor
CCluAdmExMenuItem( void )
{
CommonConstruct();
} //*** CCluAdmExMenuItem()
// Fully specified constructor
CCluAdmExMenuItem(
IN LPCTSTR lpszName,
IN LPCTSTR lpszStatusBarText,
IN ULONG nExtCommandID,
IN ULONG nCommandID,
IN ULONG nMenuItemID,
IN ULONG uFlags,
IN BOOL bMakeDefault,
IN IWEInvokeCommand * piCommand
)
{
ATLASSERT( piCommand != NULL );
CommonConstruct();
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 CCluAdmExMenuItemList;
} // if: popup menu
#if DBG
AssertValid();
#endif // DBG
} //*** CCluAdmExMenuItem()
virtual ~CCluAdmExMenuItem( void )
{
delete m_plSubMenuItems;
// Nuke data so it can't be used again
CommonConstruct();
} //*** ~CCluAdmExMenuItem()
protected:
void 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;
} //*** CommonConstruct()
protected:
//
// Attributes.
//
CString m_strName;
CString m_strStatusBarText;
ULONG m_nExtCommandID;
ULONG m_nCommandID;
ULONG m_nMenuItemID;
ULONG m_uFlags;
BOOL m_bDefault;
IWEInvokeCommand * m_piCommand;
public:
//
// Accessor methods.
//
const CString & StrName( void ) const { return m_strName; }
const CString & StrStatusBarText( void ) const { return m_strStatusBarText; }
ULONG NExtCommandID( void ) const { return m_nExtCommandID; }
ULONG NCommandID( void ) const { return m_nCommandID; }
ULONG NMenuItemID( void ) const { return m_nMenuItemID; }
ULONG UFlags( void ) const { return m_uFlags; }
BOOL BDefault( void ) const { return m_bDefault; }
IWEInvokeCommand * PiCommand( void ) { return m_piCommand; }
// Operations
public:
void SetPopupMenuHandle( IN HMENU hmenu ) { m_hmenuPopup = hmenu; }
// Implementation
protected:
HMENU m_hmenuPopup;
CCluAdmExMenuItemList * m_plSubMenuItems;
public:
HMENU HmenuPopup( void ) const { return m_hmenuPopup; }
CCluAdmExMenuItemList * PlSubMenuItems( void ) const { return m_plSubMenuItems; }
protected:
#if DBG
void AssertValid( void )
{
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))
)
{
ATLASSERT( FALSE );
}
} //*** AssertValid()
#endif // DBG
}; //*** class CCluAdmExMenuItem
/////////////////////////////////////////////////////////////////////////////
#endif // __ATLEXTMENU_H_