Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/////////////////////////////////////////////////////////////////////////////
//
// 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
|