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 Microsoft Corporation
Module Name:
faxcconbar.cpp
Abstract:
This file contains my implementation of IExtendControlbar for IComponent.
Environment:
WIN32 User Mode
Author:
Darwin Ouyang (t-darouy) 30-Sept-1997
--*/
// faxconbar.cpp : Implementation of CFaxExtendControlbar
#include "stdafx.h"
#include "faxcconbar.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
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
// CFaxComponentExtendContextMenu - IExtendContextMenu implementation for IComponent
//
//
HRESULT STDMETHODCALLTYPE CFaxComponentExtendControlbar::SetControlbar( IN LPCONTROLBAR pControlbar) /*++
Routine Description:
Stores the LPCONTROLBAR sent to the snapin. Arguments:
pControlbar - the LPCONTROLBAR to be set.
Return Value:
HRESULT indicating SUCCEEDED() or FAILED()
--*/ { DebugPrint(( TEXT("Trace: CFaxComponentExtendControlbar::SetControlbar") ));
assert(m_pFaxComponent != NULL ); if( m_pFaxComponent == NULL ) { return E_UNEXPECTED; }
if( pControlbar == NULL ) { DebugPrint(( TEXT(" ********************* FREE Controlbar") )); if( m_pFaxComponent->m_pControlbar != NULL ) { m_pFaxComponent->m_pControlbar->Release(); m_pFaxComponent->m_pControlbar = NULL; } } else { DebugPrint(( TEXT(" ********************* SET Controlbar") )); // should only be called once??
assert( m_pFaxComponent->m_pControlbar == NULL );
m_pFaxComponent->m_pControlbar = pControlbar; m_pFaxComponent->m_pControlbar->AddRef(); } return S_OK; }
HRESULT STDMETHODCALLTYPE CFaxComponentExtendControlbar::ControlbarNotify( IN MMC_NOTIFY_TYPE event, IN LPARAM arg, IN LPARAM param) /*++
Routine Description:
Dispatch the ControbarNotify call to the correct node by extracting the cookie from the DataObject. Arguments:
event - the event type. arg, param - the arguments of the event. Return Value:
HRESULT indicating SUCCEEDED() or FAILED()
--*/ { DebugPrint(( TEXT("Trace: CFaxComponentExtendControlbar::ControlbarNotify") ));
CFaxDataObject * myDataObject = NULL; LONG_PTR cookie = NULL; HRESULT hr;
if( event == MMCN_BTN_CLICK ) {
ATLTRACE(_T("CFaxComponentExtendControlbar::ControlbarNotify: MMCN_BTN_CLICK\n"));
assert( arg != NULL ); if( arg == NULL ) { return E_POINTER; }
myDataObject = ::ExtractOwnDataObject( (LPDATAOBJECT)arg ); assert( myDataObject != NULL ); if( myDataObject == NULL ) { return E_UNEXPECTED; }
cookie = myDataObject->GetCookie(); if( cookie == NULL ) { // root
hr = m_pFaxComponent->pOwner->globalRoot->ControlBarOnBtnClick( m_pFaxComponent, myDataObject, param ); } else { // child
try { hr = ((CInternalNode *)cookie)->ControlBarOnBtnClick( m_pFaxComponent, myDataObject, param ); } catch ( ... ) { DebugPrint(( TEXT("Invalid Cookie: 0x%08x"), cookie )); assert( FALSE ); // got passed an INVALID COOKIE!?!?!?!?
hr = E_UNEXPECTED; } }
} else if( event == MMCN_SELECT ) {
ATLTRACE(_T("CFaxComponentExtendControlbar::ControlbarNotify: MMCN_SELECT\n"));
assert( param != NULL ); if( param == NULL ) { return E_POINTER; }
#ifdef DEBUG
if( HIWORD( arg ) == TRUE ) { DebugPrint(( TEXT(" +++++++++++ ControlbarNotify Select") )); } else { DebugPrint(( TEXT(" ----------- ControlbarNotify DESelect") )); } #endif
myDataObject = ::ExtractOwnDataObject( (LPDATAOBJECT)param ); assert( myDataObject != NULL ); if( myDataObject == NULL ) { return E_UNEXPECTED; }
cookie = myDataObject->GetCookie(); if( cookie == NULL ) { // root
hr = m_pFaxComponent->pOwner->globalRoot->ControlBarOnSelect( m_pFaxComponent, arg, myDataObject ); } else { // child
try { hr = ((CInternalNode *)cookie)->ControlBarOnSelect( m_pFaxComponent, arg, myDataObject ); } catch ( ... ) { DebugPrint(( TEXT("Invalid Cookie: 0x%08x"), cookie )); assert( FALSE ); // got passed an INVALID COOKIE!?!?!?!?
hr = E_UNEXPECTED; } } }
return hr; }
|