mirror of https://github.com/tongzx/nt5src
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.
180 lines
5.0 KiB
180 lines
5.0 KiB
/*++
|
|
|
|
Copyright (c) 1996 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
faxconmenu.cpp
|
|
|
|
Abstract:
|
|
|
|
This file contains my implementation of IExtendContextMenu.
|
|
|
|
Environment:
|
|
|
|
WIN32 User Mode
|
|
|
|
Author:
|
|
|
|
Darwin Ouyang (t-darouy) 30-Sept-1997
|
|
|
|
--*/
|
|
|
|
// faxconmenu.cpp : Implementation of CFaxExtendContextMenu
|
|
#include "stdafx.h"
|
|
#include "faxconmenu.h"
|
|
#include "faxadmin.h"
|
|
#include "faxsnapin.h"
|
|
#include "faxcomp.h"
|
|
#include "faxcompd.h"
|
|
#include "faxdataobj.h"
|
|
#include "faxhelper.h"
|
|
#include "faxstrt.h"
|
|
#include "iroot.h"
|
|
|
|
#pragma hdrstop
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
//
|
|
// CFaxExtendContextMenu - IExtendContextMenu implementation for IComponentData
|
|
//
|
|
//
|
|
|
|
HRESULT
|
|
STDMETHODCALLTYPE
|
|
CFaxExtendContextMenu::AddMenuItems(
|
|
IN LPDATAOBJECT piDataObject,
|
|
IN LPCONTEXTMENUCALLBACK piCallback,
|
|
IN OUT long __RPC_FAR *pInsertionAllowed)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
Dispatch the AddMenuItems call to the correct node by extracting the
|
|
cookie from the DataObject.
|
|
|
|
Arguments:
|
|
|
|
piDataObject - the data object for the target node.
|
|
piCallback - the CONTEXTMENUCALLBACK pointer
|
|
pInsertionAllowed - flags to indicate whether insertion is allowed.
|
|
|
|
Return Value:
|
|
|
|
HRESULT indicating SUCCEEDED() or FAILED()
|
|
|
|
--*/
|
|
{
|
|
DebugPrint(( TEXT("Trace: CFaxExtendContextMenu::AddMenuItems") ));
|
|
|
|
CFaxDataObject * myDataObject = NULL;
|
|
LONG_PTR cookie;
|
|
HRESULT hr;
|
|
|
|
assert( piDataObject != NULL );
|
|
if( piDataObject == NULL ) {
|
|
return E_POINTER;
|
|
}
|
|
if( piCallback == NULL ) {
|
|
return E_POINTER;
|
|
}
|
|
if( pInsertionAllowed == NULL ) {
|
|
return E_POINTER;
|
|
}
|
|
|
|
myDataObject = ExtractOwnDataObject( piDataObject );
|
|
if( myDataObject == NULL ) {
|
|
return E_UNEXPECTED;
|
|
}
|
|
|
|
cookie = myDataObject->GetCookie();
|
|
|
|
if(cookie == NULL) {
|
|
// root node
|
|
hr = m_pFaxSnapin->globalRoot->ComponentDataContextMenuAddMenuItems( m_pFaxSnapin,
|
|
myDataObject,
|
|
piCallback,
|
|
pInsertionAllowed );
|
|
} else {
|
|
// child node
|
|
try {
|
|
hr = ((CInternalNode *)cookie)->ComponentDataContextMenuAddMenuItems( m_pFaxSnapin,
|
|
myDataObject,
|
|
piCallback,
|
|
pInsertionAllowed );
|
|
} catch (...) {
|
|
DebugPrint(( TEXT("Invalid Cookie: 0x%08x"), cookie ));
|
|
assert( FALSE ); // got passed an INVALID COOKIE!?!?!?!?
|
|
hr = E_UNEXPECTED;
|
|
}
|
|
}
|
|
|
|
return hr;
|
|
}
|
|
|
|
HRESULT
|
|
STDMETHODCALLTYPE
|
|
CFaxExtendContextMenu::Command(
|
|
IN long lCommandID,
|
|
IN LPDATAOBJECT piDataObject)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
Dispatch the context menu Command call to the correct node by extracting the
|
|
cookie from the DataObject.
|
|
|
|
Arguments:
|
|
|
|
lCommandID - the command id
|
|
piDataObject - the DataObject for the target node.
|
|
|
|
Return Value:
|
|
|
|
HRESULT indicating SUCCEEDED() or FAILED()
|
|
|
|
--*/
|
|
{
|
|
DebugPrint(( TEXT("Trace: CFaxExtendContextMenu::Command") ));
|
|
|
|
CFaxDataObject * myDataObject = NULL;
|
|
LONG_PTR cookie;
|
|
HRESULT hr;
|
|
|
|
assert( piDataObject != NULL );
|
|
if( piDataObject == NULL ) {
|
|
return E_POINTER;
|
|
}
|
|
|
|
myDataObject = ExtractOwnDataObject( piDataObject );
|
|
if( myDataObject == NULL ) {
|
|
return E_UNEXPECTED;
|
|
}
|
|
|
|
cookie = myDataObject->GetCookie();
|
|
|
|
if(cookie == NULL) {
|
|
// root node
|
|
hr = m_pFaxSnapin->globalRoot->ComponentDataContextMenuCommand( m_pFaxSnapin,
|
|
lCommandID,
|
|
myDataObject );
|
|
} else {
|
|
// child node
|
|
try {
|
|
hr = ((CInternalNode *)cookie)->ComponentDataContextMenuCommand( m_pFaxSnapin,
|
|
lCommandID,
|
|
myDataObject );
|
|
} catch ( ... ) {
|
|
DebugPrint(( TEXT("Invalid Cookie: 0x%08x"), cookie ));
|
|
assert( FALSE ); // got passed an INVALID COOKIE!?!?!?!?
|
|
hr = E_UNEXPECTED;
|
|
}
|
|
}
|
|
|
|
return hr;
|
|
}
|
|
|