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.
 
 
 
 
 
 

133 lines
4.0 KiB

//----------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 2001.
//
// File: Ccomp.h
//
// Contents: Wifi Policy management Snapin
//
//
// History: TaroonM
// 10/30/01
//
//----------------------------------------------------------------------------
#ifndef _CCOMP_H
#define _CCOMP_H
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
// Extra cruft (where should we put this?)
#define ARRAYLEN(x) (sizeof(x) / sizeof((x)[0]))
enum CUSTOM_VIEW_ID
{
VIEW_DEFAULT_LV = 0,
VIEW_CALENDAR_OCX = 1,
VIEW_MICROSOFT_URL = 2,
};
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
// forward decl
class CComponentDataImpl;
class CComponentImpl :
public IComponent,
public IExtendContextMenu,
public IExtendControlbar,
public IExtendPropertySheet,
public IResultDataCompare,
public CComObjectRoot
{
public:
CComponentImpl();
~CComponentImpl();
BEGIN_COM_MAP(CComponentImpl)
COM_INTERFACE_ENTRY(IComponent)
COM_INTERFACE_ENTRY(IExtendContextMenu)
COM_INTERFACE_ENTRY(IExtendControlbar)
COM_INTERFACE_ENTRY(IExtendPropertySheet)
COM_INTERFACE_ENTRY(IResultDataCompare)
END_COM_MAP()
friend class CDataObject;
static long lDataObjectRefCount;
// IComponent interface members
public:
STDMETHOD(Initialize)(LPCONSOLE lpConsole);
STDMETHOD(Notify)(LPDATAOBJECT pDataObject, MMC_NOTIFY_TYPE event, LPARAM arg, LPARAM param);
STDMETHOD(Destroy)(MMC_COOKIE cookie);
STDMETHOD(GetResultViewType)(MMC_COOKIE cookie, LPOLESTR* ppViewType, long* pViewOptions);
STDMETHOD(QueryDataObject)(MMC_COOKIE cookie, DATA_OBJECT_TYPES type, LPDATAOBJECT* ppDataObject);
STDMETHOD(GetDisplayInfo)(LPRESULTDATAITEM pResultDataItem);
STDMETHOD(CompareObjects)(LPDATAOBJECT pDataObjectA, LPDATAOBJECT pDataObjectB);
// IResultDataCompare
STDMETHOD(Compare)(LPARAM lUserParam, MMC_COOKIE cookieA, MMC_COOKIE cookieB, int* pnResult);
// IExtendControlbar interface
STDMETHOD(SetControlbar)(LPCONTROLBAR pControlbar);
STDMETHOD(ControlbarNotify)(MMC_NOTIFY_TYPE event, LPARAM arg, LPARAM param);
// IExtendPropertySheet interface
public:
STDMETHOD(CreatePropertyPages)(LPPROPERTYSHEETCALLBACK lpProvider, LONG_PTR handle, LPDATAOBJECT pDataObject);
STDMETHOD(QueryPagesFor)(LPDATAOBJECT pDataObject);
public:
// IPersistStream interface members
STDMETHOD(GetClassID)(CLSID *pClassID);
// Helpers for CComponentImpl
public:
void SetIComponentData(CComponentDataImpl* pData);
#if DBG==1
public:
int dbg_cRef;
ULONG InternalAddRef()
{
++dbg_cRef;
return CComObjectRoot::InternalAddRef();
}
ULONG InternalRelease()
{
--dbg_cRef;
return CComObjectRoot::InternalRelease();
}
#endif // DBG==1
// IExtendContextMenu
public:
STDMETHOD(AddMenuItems)(LPDATAOBJECT pDataObject, LPCONTEXTMENUCALLBACK pCallbackUnknown, long *pInsertionAllowed);
STDMETHOD(Command)(long nCommandID, LPDATAOBJECT pDataObject);
// Helper functions
protected:
void Construct();
// Interface pointers
protected:
LPCONSOLE m_pConsole; // Console's IFrame interface
LPHEADERCTRL m_pHeader; // Result pane's header control interface
LPCOMPONENTDATA m_pComponentData;
LPCONSOLEVERB m_pConsoleVerb; // pointer the console verb
LPRESULTDATA m_pResultData; // My interface pointer to the result pane
CComPtr <IControlbar> m_spControlbar; // Used by IExtendControlbar implementation
CComponentDataImpl* m_pCComponentData;
private:
CUSTOM_VIEW_ID m_CustomViewID;
DWORD m_dwSortOrder; // default is 0, else RSI_DESCENDING
int m_nSortColumn;
};
#endif