181 lines
4.5 KiB
C++
181 lines
4.5 KiB
C++
/*++
|
|
|
|
Copyright (c) 1996 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
faxconbar.cpp
|
|
|
|
Abstract:
|
|
|
|
This file contains my implementation of IExtendControlbar for IComponentData.
|
|
|
|
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
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
//
|
|
// CFaxExtendControlbar - IExtendControlbar implementation for IComponentData
|
|
//
|
|
//
|
|
|
|
HRESULT
|
|
STDMETHODCALLTYPE
|
|
CFaxExtendControlbar::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: CFaxExtendControlbar::SetControlbar") ));
|
|
|
|
assert( pControlbar != NULL );
|
|
if( pControlbar == NULL ) {
|
|
return E_POINTER;
|
|
}
|
|
|
|
assert(m_pFaxSnapin != NULL );
|
|
if( m_pFaxSnapin == NULL ) {
|
|
return E_UNEXPECTED;
|
|
}
|
|
|
|
m_pFaxSnapin->m_pControlbar = pControlbar;
|
|
m_pFaxSnapin->m_pControlbar->AddRef();
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
HRESULT
|
|
STDMETHODCALLTYPE
|
|
CFaxExtendControlbar::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: CFaxExtendControlbar::ControlbarNotify") ));
|
|
|
|
CFaxDataObject * myDataObject = NULL;
|
|
LONG_PTR cookie = NULL;
|
|
HRESULT hr;
|
|
|
|
if( event == MMCN_BTN_CLICK ) {
|
|
|
|
ATLTRACE(_T("CFaxExtendControlbar::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_pFaxSnapin->globalRoot->ControlBarOnBtnClick2( m_pFaxSnapin, myDataObject, param );
|
|
} else {
|
|
// child
|
|
try {
|
|
hr = ((CInternalNode *)cookie)->ControlBarOnBtnClick2( m_pFaxSnapin, 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("CFaxExtendControlbar::ControlbarNotify: MMCN_SELECT\n"));
|
|
|
|
assert( param != NULL );
|
|
if( param == NULL ) {
|
|
return E_POINTER;
|
|
}
|
|
|
|
myDataObject = ::ExtractOwnDataObject( (LPDATAOBJECT)param );
|
|
assert( myDataObject != NULL );
|
|
if( myDataObject == NULL ) {
|
|
return E_UNEXPECTED;
|
|
}
|
|
|
|
cookie = myDataObject->GetCookie();
|
|
if( cookie == NULL ) {
|
|
// root
|
|
hr = m_pFaxSnapin->globalRoot->ControlBarOnSelect2( m_pFaxSnapin, arg, myDataObject );
|
|
} else {
|
|
// child
|
|
try {
|
|
hr = ((CInternalNode *)cookie)->ControlBarOnSelect2( m_pFaxSnapin, arg, myDataObject );
|
|
} catch ( ... ) {
|
|
DebugPrint(( TEXT("Invalid Cookie: 0x%08x"), cookie ));
|
|
assert( FALSE ); // got passed an INVALID COOKIE!?!?!?!?
|
|
hr = E_UNEXPECTED;
|
|
}
|
|
}
|
|
}
|
|
|
|
return hr;
|
|
}
|
|
|