- BORLAND/: Borland C++ 4.52 (chosen over 4.5 by byte-match: CODE/RP/CW32.LIB
is identical to 4.52's install lib). BCC32/TLINK32/TLIB/MAKE run natively on
Win11; CODE/BT/OPT.MAK is the shipped BTL4OPT.EXE's exact flag recipe
(extender = Borland PowerPack DPMI32, not Phar Lap TNT).
- restoration/source410/: the literal 1995-form reconstruction of the missing
BT game source (never mixed into CODE/). Round 1-3 state:
* 6 of 10 surviving original TUs COMPILE CLEAN under the period toolchain
(BTMSSN, BTCNSL, BTSCNRL, BTTEAM, BTL4MODE, BTL4ARND) - first builds
since 1996.
* BT_L4/BTL4APP.CPP pilot reconstruction: 12/12 functions, Fail() lands on
its binary-recorded line 400 exactly.
* BT/BTCNSL.HPP: console wire IDs recovered from the binary's ctors
(Killed=9, Damaged=10, ScoreUpdate=13, DeathWithoutHonor=15 [T1];
TeamScore=12 flagged [T4]).
* MUNGA/: 8 engine-header backfills back-dated from the BT412 WinTesla tree
(VDATA numbering decomp-verified; AUDREND's OpenAL-era virtual removed -
the period compiler is the drift detector).
* Tooling: backdate.py (WinTesla->1995 header transform), compile410.sh
(per-TU verification sweep under authentic OPT.MAK flags).
* README: corrected roadmap - MECH.HPP is the capstone grown with the mech
TU reconstructions; BTREG.CPP green = the header-family milestone.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
481 lines
19 KiB
C++
481 lines
19 KiB
C++
// $Header: N:\admin\ocf\include\ocf\boleintf.h_v 2.0.1.0 10 Apr 1995 18:04:52 CQUINN $
|
|
//----------------------------------------------------------------------------
|
|
// ObjectComponents
|
|
// (C) Copyright 1994 by Borland International, All Rights Reserved
|
|
//
|
|
// ObjectComponents BOcOle engine linking & embedding interfaces
|
|
//----------------------------------------------------------------------------
|
|
#if !defined(OCF_BOLEINTF_H)
|
|
#define OCF_BOLEINTF_H
|
|
|
|
#if !defined(OCF_OCOBJECT_H)
|
|
# include <ocf/ocobject.h> // get ocf structs & enums
|
|
#endif
|
|
#if !defined(OSL_GEOMETRY_H)
|
|
# include <osl/geometry.h> // TPoint, TSize & TRect
|
|
#endif
|
|
#if defined(WIN32)
|
|
# include "pshpack8.h"
|
|
#endif
|
|
|
|
//
|
|
// BOcOle DLL name, entry point and version resource
|
|
//
|
|
#if defined(BI_PLAT_WIN32)
|
|
# define BOLEDLL "BOCOF.DLL"
|
|
# define BOLEDLLW "BOCOFW.DLL"
|
|
#else
|
|
# define BOLEDLL "BOCOLE.DLL"
|
|
# define BOLEDLLW BOLEDLL
|
|
#endif
|
|
#define BOLEBIND "CreateClassMgr"
|
|
#define BOLE_FILEVER_LS 0x00010053L
|
|
#define BOLE_FILEVER_MS 0x00010000L
|
|
|
|
//
|
|
// GUIDs exported by the BOcOle DLL
|
|
//
|
|
#if defined(INIT_BGUID)
|
|
# define DEFINE_BOLEGUID(name, l) \
|
|
EXTERN_C __export const GUID CDECL FAR name = \
|
|
{ l, 0, 0, {0xC0,0,0,0,0,0,0,0x46} }
|
|
#else
|
|
# define DEFINE_BOLEGUID(name, l) EXTERN_C const GUID CDECL FAR name
|
|
#endif
|
|
|
|
DEFINE_BOLEGUID(IID_IBPart, 0x02A104L);
|
|
DEFINE_BOLEGUID(IID_IBSite, 0x02A105L);
|
|
DEFINE_BOLEGUID(IID_IBContainer, 0x02A106L);
|
|
DEFINE_BOLEGUID(IID_IBDocument, 0x02A107L);
|
|
DEFINE_BOLEGUID(IID_IBService, 0x02A108L);
|
|
DEFINE_BOLEGUID(IID_IBApplication, 0x02A109L);
|
|
DEFINE_BOLEGUID(IID_IBClassMgr, 0x02A10AL);
|
|
DEFINE_BOLEGUID(IID_IBLinkInfo, 0x02A10BL);
|
|
DEFINE_BOLEGUID(IID_IBLinkable, 0x02A10CL);
|
|
DEFINE_BOLEGUID(IID_IBRootLinkable, 0x02A10DL);
|
|
DEFINE_BOLEGUID(IID_IBContains, 0x02A10EL);
|
|
DEFINE_BOLEGUID(IID_BOleDocument, 0x02A10FL);
|
|
DEFINE_BOLEGUID(IID_BOlePart, 0x02A110L);
|
|
DEFINE_BOLEGUID(IID_IBDataConsumer, 0x02A111L);
|
|
DEFINE_BOLEGUID(IID_IBDataProvider, 0x02A112L);
|
|
DEFINE_BOLEGUID(IID_IBWindow, 0x02A113L);
|
|
DEFINE_BOLEGUID(IID_IBDataNegotiator,0x02A114L);
|
|
DEFINE_BOLEGUID(IID_IBDropDest, 0x02A115L);
|
|
DEFINE_BOLEGUID(IID_BOleShadowData, 0x02A116L);
|
|
DEFINE_BOLEGUID(IID_IBClass, 0x02A117L);
|
|
DEFINE_BOLEGUID(IID_IBOverrideBrowseLinks, 0x02A118L);
|
|
DEFINE_BOLEGUID(IID_BOleSite, 0x02A119L);
|
|
DEFINE_BOLEGUID(IID_IBSite2, 0x02A11AL);
|
|
DEFINE_BOLEGUID(IID_IBOverrideHelpButton, 0x02A11BL);
|
|
DEFINE_BOLEGUID(IID_IBDataProvider2, 0x02A11CL);
|
|
DEFINE_BOLEGUID(IID_IBPart2, 0x02A11DL);
|
|
//DEFINE_BOLEGUID(IID_BOlePart2, 0x02A11EL);
|
|
|
|
//
|
|
// BOle Class ids for instantiating BOle objects (helpers)
|
|
//
|
|
typedef uint32 BCID;
|
|
const BCID cidBOleService = 1L; //
|
|
const BCID cidBOleDocument = 2L; // helper for containers
|
|
const BCID cidBOlePart = 3L; // helper for sites
|
|
const BCID cidBOleSite = 4L; // helper for parts
|
|
const BCID cidBOleInProcSite = 5L; // helper for parts
|
|
const BCID cidBOleContainer = 6L; // helper for part documents
|
|
const BCID cidBOleData = 7L; // helper for data transfer
|
|
const BCID cidBOleFactory = 8L; // helper for class factory
|
|
const BCID cidBOleShadowData = 9L; // helper for non delayed rendering
|
|
const BCID cidBOleInProcHandler= 10L; // helper for dll handler parts
|
|
|
|
//
|
|
// Forward declarations
|
|
//
|
|
class _ICLASS IBClassMgr;
|
|
class _ICLASS IBPart;
|
|
class _ICLASS IBService;
|
|
class _ICLASS IBLinkable;
|
|
class _ICLASS IBRootLinkable;
|
|
class _ICLASS IBContains;
|
|
class _ICLASS IBDocument;
|
|
class _ICLASS IBContainer;
|
|
class _ICLASS IBSite;
|
|
class _ICLASS IBApplication;
|
|
class _ICLASS IBLinkInfo;
|
|
class _ICLASS IBDataNegotiator;
|
|
class _ICLASS IBDataProvider;
|
|
class _ICLASS IBDataConsumer;
|
|
class _ICLASS IBWindow;
|
|
class _ICLASS IBDropDest;
|
|
class _ICLASS IBClass;
|
|
class _ICLASS IBOverrideBrowseLinks;
|
|
class _ICLASS IBSite2;
|
|
class _ICLASS IBOverrideHelpButton;
|
|
class _ICLASS IBPart2;
|
|
class _ICLASS IBDataProvider2;
|
|
|
|
|
|
//
|
|
// IClassMgr abstract base class
|
|
//
|
|
class _ICLASS IBClassMgr : public IUnknown {
|
|
public:
|
|
virtual HRESULT _IFUNC ComponentCreate(
|
|
IUnknown far* far* ppRet,
|
|
IUnknown far* pAggregator,
|
|
BCID idClass
|
|
) = 0;
|
|
virtual HRESULT _IFUNC ComponentInfoGet(
|
|
IUnknown far* far* ppInfo,
|
|
IUnknown far* pAggregator,
|
|
BCID idClass
|
|
) = 0;
|
|
};
|
|
|
|
//
|
|
// IBDataNegotiator -- Enumerats formats for drag/drop and paste
|
|
//
|
|
class _ICLASS IBDataNegotiator : public IUnknown {
|
|
public:
|
|
virtual uint _IFUNC CountFormats() = 0;
|
|
virtual HRESULT _IFUNC GetFormat(uint, TOcFormatInfo far*) = 0;
|
|
};
|
|
|
|
//
|
|
// IBDataConsumer -- Supported by containers who want to accept drag/drop
|
|
// and paste. No new methods over the negotiator, so
|
|
// this is just a placeholder for the consumer name.
|
|
//
|
|
class _ICLASS IBDataConsumer : public IBDataNegotiator {
|
|
};
|
|
|
|
//
|
|
// IBDataProvider -- Supported by parts and/or sites which can be
|
|
// copied to the OLE2 clipboard
|
|
//
|
|
class _ICLASS IBDataProvider : public IBDataNegotiator {
|
|
public:
|
|
virtual HANDLE _IFUNC GetFormatData(TOcFormatInfo far*) = 0;
|
|
virtual HRESULT _IFUNC Draw(HDC, const RECTL far*,
|
|
const RECTL far*, TOcAspect,
|
|
TOcDraw bd = drNone) = 0;
|
|
virtual HRESULT _IFUNC GetPartSize(TSize far*) = 0;
|
|
virtual HRESULT _IFUNC Save(IStorage far*, bool fSamAsLoad,
|
|
bool fRemember) = 0;
|
|
};
|
|
|
|
|
|
// IBDataProvider2 -- new version of IBDataProvider
|
|
//
|
|
class _ICLASS IBDataProvider2 : public IBDataProvider {
|
|
public:
|
|
|
|
virtual HRESULT _IFUNC SetFormatData(TOcFormatInfo far* fmt, HANDLE data, BOOL release) = 0;
|
|
};
|
|
|
|
|
|
//
|
|
// IBPart -- Supported by server objects
|
|
//
|
|
class _ICLASS IBPart : public IBDataProvider {
|
|
public:
|
|
virtual HRESULT _IFUNC Init(IBSite far*, TOcInitInfo far*) = 0;
|
|
virtual HRESULT _IFUNC Close() = 0;
|
|
virtual HRESULT _IFUNC CanOpenInPlace() = 0;
|
|
virtual HRESULT _IFUNC SetPartSize(TSize far*) = 0;
|
|
virtual HRESULT _IFUNC SetPartPos(TRect far*) = 0;
|
|
virtual HRESULT _IFUNC Activate(bool) = 0;
|
|
virtual HRESULT _IFUNC Show(bool) = 0;
|
|
virtual HRESULT _IFUNC Open(bool) = 0;
|
|
virtual HRESULT _IFUNC EnumVerbs(TOcVerb far*) = 0;
|
|
virtual HRESULT _IFUNC DoVerb(uint) = 0;
|
|
virtual HWND _IFUNC OpenInPlace(HWND) = 0;
|
|
virtual HRESULT _IFUNC InsertMenus(HMENU, TOcMenuWidths far*) = 0;
|
|
virtual HRESULT _IFUNC ShowTools(bool) = 0;
|
|
virtual void _IFUNC FrameResized(const TRect far*, bool) = 0;
|
|
virtual HRESULT _IFUNC DragFeedback(TPoint far*, bool) = 0;
|
|
virtual HRESULT _IFUNC GetPalette(LOGPALETTE far* far*) = 0;
|
|
virtual HRESULT _IFUNC SetHost(IBContainer far* pObjContainer) = 0;
|
|
virtual HRESULT _IFUNC DoQueryInterface(const IID far& iid, void far* far* pif)= 0;
|
|
|
|
virtual LPOLESTR _IFUNC GetName(TOcPartName) = 0;
|
|
};
|
|
|
|
|
|
// IBPart2 -- Supported by server objects
|
|
//
|
|
class _ICLASS IBPart2 : public IBPart,
|
|
public IBDataProvider2 {
|
|
};
|
|
|
|
|
|
//
|
|
// IService abstract base class
|
|
//
|
|
class _ICLASS IBService : public IUnknown {
|
|
public:
|
|
virtual void _IFUNC OnResize() = 0;
|
|
virtual void _IFUNC OnActivate(bool) = 0;
|
|
virtual HRESULT _IFUNC OnModalDialog(bool) = 0;
|
|
virtual HRESULT _IFUNC OnSetFocus(bool) = 0;
|
|
|
|
virtual HRESULT _IFUNC Init(IBApplication far*) = 0;
|
|
virtual HRESULT _IFUNC RegisterClass(LPCOLESTR, IBClassMgr far*,
|
|
BCID, bool embedInSelf,
|
|
bool singleUse) = 0;
|
|
virtual HRESULT _IFUNC UnregisterClass(LPCOLESTR) = 0;
|
|
virtual HRESULT _IFUNC TranslateAccel(MSG far*) = 0;
|
|
virtual TOcHelp _IFUNC HelpMode(TOcHelp) = 0;
|
|
virtual HRESULT _IFUNC CanClose() = 0;
|
|
|
|
virtual HRESULT _IFUNC BrowseClipboard(TOcInitInfo far*) = 0;
|
|
virtual HRESULT _IFUNC Browse(TOcInitInfo far*) = 0;
|
|
|
|
virtual HRESULT _IFUNC Paste(TOcInitInfo far*) = 0;
|
|
virtual HRESULT _IFUNC Clip(IBDataProvider far*, bool, bool,
|
|
bool) = 0;
|
|
virtual HRESULT _IFUNC Drag(IBDataProvider far*, TOcDropAction,
|
|
TOcDropAction far*) = 0;
|
|
virtual IStorage FAR* _IFUNC CreateStorageOnFile(LPCOLESTR,
|
|
bool) = 0;
|
|
virtual HRESULT _IFUNC ConvertUI(IBPart far*, bool,
|
|
TOcConvertInfo far*) = 0;
|
|
virtual HRESULT _IFUNC ConvertGuts(IBPart far*, bool,
|
|
TOcConvertInfo far*) = 0;
|
|
virtual TOcMenuEnable _IFUNC EnableEditMenu(TOcMenuEnable,
|
|
IBDataConsumer far*)= 0;
|
|
};
|
|
|
|
//
|
|
// ILinkable abstract base class
|
|
//
|
|
class _ICLASS IBLinkable : public IUnknown {
|
|
public:
|
|
virtual HRESULT _IFUNC GetMoniker(IMoniker far* far* ppMon) = 0;
|
|
virtual HRESULT _IFUNC OnRename(IBLinkable far* pContainer,
|
|
LPCOLESTR name) = 0;
|
|
// pass 0 name when Doc closes
|
|
// pass boledoc for pContainer if root part(file)
|
|
};
|
|
|
|
//
|
|
//
|
|
//
|
|
class _ICLASS IBRootLinkable : public IBLinkable {
|
|
public:
|
|
virtual HRESULT _IFUNC Init(IBContains far* pC, LPCOLESTR szProgId) = 0;
|
|
virtual HRESULT _IFUNC SetMoniker(IMoniker far* pMon) = 0;
|
|
};
|
|
//
|
|
// on BOleLinkDoc used by Part servers and Linking Containers
|
|
// on BOleSite used by parts
|
|
//
|
|
|
|
//
|
|
// IContains abstract base class
|
|
//
|
|
class _ICLASS IBContains : public IUnknown {
|
|
public:
|
|
virtual HRESULT _IFUNC Init(LPCOLESTR) = 0;
|
|
virtual HRESULT _IFUNC GetPart(IBPart far* far*, LPCOLESTR) = 0;
|
|
};
|
|
//
|
|
// on linkable containers (all Containers with BOleLinkDoc helper)
|
|
// on linkable server documents (with BOleLinkDoc helper)
|
|
// on intermediate parts (in addition to IPart)
|
|
//
|
|
|
|
//
|
|
// IBDocument -- Supported by BOleDocument one per container child window
|
|
//
|
|
class _ICLASS IBDocument : public IUnknown {
|
|
public:
|
|
virtual HRESULT _IFUNC Init(IBContainer far*) = 0;
|
|
virtual void _IFUNC OnResize() = 0;
|
|
virtual void _IFUNC OnActivate(bool) = 0;
|
|
virtual void _IFUNC OnClose() = 0;
|
|
virtual HRESULT _IFUNC OnSetFocus(bool) = 0;
|
|
|
|
virtual HRESULT _IFUNC EnumLinks(IBLinkInfo far* far*) = 0;
|
|
virtual HRESULT _IFUNC BrowseLinks() = 0;
|
|
virtual HRESULT _IFUNC UpdateLinks() = 0;
|
|
};
|
|
|
|
//
|
|
// IBWindow -- Supported on child window *and* frame window of container apps
|
|
//
|
|
class _ICLASS IBWindow : public IUnknown {
|
|
public:
|
|
virtual HWND _IFUNC GetWindow() = 0;
|
|
virtual HRESULT _IFUNC GetWindowRect(TRect far*) = 0;
|
|
virtual LPCOLESTR _IFUNC GetWindowTitle() = 0;
|
|
virtual void _IFUNC AppendWindowTitle(LPCOLESTR) = 0;
|
|
virtual HRESULT _IFUNC SetStatusText(LPCOLESTR) = 0;
|
|
|
|
virtual HRESULT _IFUNC RequestBorderSpace(const TRect far*) = 0;
|
|
virtual HRESULT _IFUNC SetBorderSpace(const TRect far*) = 0;
|
|
|
|
virtual HRESULT _IFUNC InsertContainerMenus(HMENU,
|
|
TOcMenuWidths far*) = 0;
|
|
virtual HRESULT _IFUNC SetFrameMenu(HMENU) = 0;
|
|
virtual void _IFUNC RestoreUI() = 0;
|
|
virtual HRESULT _IFUNC Accelerator(MSG far*) = 0;
|
|
virtual HRESULT _IFUNC GetAccelerators(HACCEL far*, int far*) = 0;
|
|
};
|
|
|
|
//
|
|
// IBContainer -- Supported by container app's document window
|
|
//
|
|
class _ICLASS IBContainer : public IBWindow {
|
|
public:
|
|
virtual HRESULT _IFUNC FindDropDest(TPoint far*, IBDropDest far* far*)=0;
|
|
virtual HRESULT _IFUNC AllowInPlace() = 0;
|
|
virtual HRESULT _IFUNC BringToFront() = 0;
|
|
};
|
|
|
|
//
|
|
// IBDropDest -- Supported by container app's document window and/or other
|
|
// areas inside the window.
|
|
//
|
|
class _ICLASS IBDropDest : public IBDataConsumer {
|
|
public:
|
|
virtual HRESULT _IFUNC Drop(TOcInitInfo far*, TPoint far*,
|
|
const TRect far*) = 0;
|
|
virtual void _IFUNC DragFeedback(TPoint far*, const TRect far*,
|
|
TOcMouseAction, uint, HRESULT&) = 0;
|
|
virtual HRESULT _IFUNC Scroll(TOcScrollDir scrollDir) = 0;
|
|
virtual HRESULT _IFUNC GetScrollRect(TRect far*) = 0;
|
|
};
|
|
|
|
//
|
|
// IBApplication -- Supported at frame window/app object of container apps
|
|
//
|
|
class _ICLASS IBApplication : public IBWindow {
|
|
public:
|
|
virtual LPCOLESTR _IFUNC GetAppName() = 0;
|
|
virtual TOcHelp _IFUNC HelpMode(TOcHelp) = 0;
|
|
virtual HRESULT _IFUNC CanLink() = 0;
|
|
virtual HRESULT _IFUNC CanEmbed() = 0;
|
|
virtual HRESULT _IFUNC IsMDI() = 0;
|
|
virtual HRESULT _IFUNC OnModalDialog(bool) = 0;
|
|
virtual void _IFUNC DialogHelpNotify(TOcDialogHelp) = 0;
|
|
virtual void _IFUNC ShutdownMaybe() = 0;
|
|
};
|
|
|
|
//
|
|
// IBSite -- Supported by container apps for each linked/embedded object
|
|
//
|
|
class _ICLASS IBSite : public IUnknown {
|
|
public:
|
|
virtual HRESULT _IFUNC SiteShow(bool) = 0;
|
|
virtual HRESULT _IFUNC DiscardUndo() = 0;
|
|
virtual HRESULT _IFUNC GetSiteRect(TRect far*, TRect far*) = 0;
|
|
virtual HRESULT _IFUNC SetSiteRect(const TRect far*) = 0;
|
|
virtual HRESULT _IFUNC SetSiteExtent(const TSize far*) = 0;
|
|
virtual HRESULT _IFUNC GetZoom(TOcScaleInfo far* pScale) = 0;
|
|
virtual void _IFUNC Invalidate(TOcInvalidate) = 0;
|
|
virtual void _IFUNC OnSetFocus(bool) = 0;
|
|
virtual HRESULT _IFUNC Init(IBDataProvider far*, IBPart far*,
|
|
LPCOLESTR, bool) = 0;
|
|
virtual void _IFUNC Disconnect() = 0;
|
|
};
|
|
|
|
//
|
|
// IBLinkInfo -- Supported by BOleParts which are link objects
|
|
//
|
|
class _ICLASS IBLinkInfo : public IUnknown {
|
|
public:
|
|
virtual HRESULT _IFUNC SourceBreak() = 0;
|
|
virtual HRESULT _IFUNC SourceGet(LPOLESTR, uint count) = 0;
|
|
virtual HRESULT _IFUNC SourceSet(LPOLESTR) = 0;
|
|
virtual HRESULT _IFUNC SourceOpen() = 0;
|
|
virtual HRESULT _IFUNC UpdateGet(TOcLinkUpdate far*) = 0;
|
|
virtual HRESULT _IFUNC UpdateSet(TOcLinkUpdate) = 0;
|
|
virtual HRESULT _IFUNC UpdateNow() = 0;
|
|
};
|
|
|
|
//
|
|
// IBClass -- Supported by BOleFactory
|
|
//
|
|
class _ICLASS IBClass : public IClassFactory {
|
|
public:
|
|
virtual HRESULT _IFUNC Init(bool selfEmbed, LPCOLESTR pszProgId,
|
|
IBClassMgr* pCM, BCID rid) = 0;
|
|
virtual HRESULT _IFUNC Register(bool singleUse) = 0;
|
|
virtual HRESULT _IFUNC Revoke() = 0;
|
|
virtual HRESULT _IFUNC GetClassID(CLSID far* pOut) = 0;
|
|
virtual bool _IFUNC IsA(CLSID far& pOut) = 0;
|
|
virtual bool _IFUNC AllowEmbedFromSelf() = 0;
|
|
virtual HRESULT _IFUNC GetEmbeddingHelperFactory(LPUNKNOWN *ppF) = 0;
|
|
};
|
|
|
|
//
|
|
// IBOverrideBrowseLinks -- Supported by containers(who aggregate BOleDoc)
|
|
// who want to override our BrowseLinks dialog.
|
|
//
|
|
class _ICLASS IBOverrideBrowseLinks : public IUnknown {
|
|
public:
|
|
virtual HRESULT _IFUNC BrowseLinks() = 0;
|
|
};
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Will eliminate this inline QI in favor of TUnknown version next rev.
|
|
//
|
|
inline HRESULT _IFUNC IUnknown_QueryInterface(IUnknown FAR *, REFIID iid, LPVOID FAR * pif)
|
|
{
|
|
// To avoid handing out different IUnknown pointers for
|
|
// the same Windows Object don't match here.
|
|
// Only match in the main IUnknown in the outermost aggregator.
|
|
//
|
|
return ResultFromScode(E_NOINTERFACE);
|
|
}
|
|
|
|
#define DEFINE_INLINE_QI(I, P) \
|
|
inline HRESULT _IFUNC I##_QueryInterface(I FAR* This, REFIID iid, LPVOID FAR* pif) \
|
|
{ \
|
|
return (iid == IID_##I) ? \
|
|
(*pif = This), This->AddRef(), HR_OK : \
|
|
P##_QueryInterface(This, iid, pif); \
|
|
}
|
|
|
|
#define DEFINE_INLINE_QI2(I, P1, P2) \
|
|
inline HRESULT _IFUNC I##_QueryInterface(I FAR* This, REFIID iid, LPVOID FAR* pif) \
|
|
{ \
|
|
return (iid == IID_##I) ? \
|
|
(*pif = This), ((P1*)This)->AddRef(), HR_OK : \
|
|
SUCCEEDED(P1##_QueryInterface(This, iid, pif))? HR_OK :\
|
|
P2##_QueryInterface(This, iid, pif); \
|
|
}
|
|
|
|
DEFINE_INLINE_QI(IBDataNegotiator, IUnknown)
|
|
DEFINE_INLINE_QI(IBDataConsumer, IUnknown)
|
|
DEFINE_INLINE_QI(IBDropDest, IBDataConsumer)
|
|
DEFINE_INLINE_QI(IBDataProvider, IBDataNegotiator)
|
|
DEFINE_INLINE_QI(IBPart, IBDataProvider)
|
|
|
|
DEFINE_INLINE_QI(IBWindow, IUnknown)
|
|
DEFINE_INLINE_QI(IBContainer, IBWindow)
|
|
DEFINE_INLINE_QI(IBApplication, IBWindow)
|
|
|
|
DEFINE_INLINE_QI(IBDocument, IUnknown)
|
|
DEFINE_INLINE_QI(IBService, IUnknown)
|
|
DEFINE_INLINE_QI(IBClassMgr, IUnknown)
|
|
DEFINE_INLINE_QI(IBLinkInfo, IUnknown)
|
|
DEFINE_INLINE_QI(IBSite, IUnknown)
|
|
DEFINE_INLINE_QI(IBContains, IUnknown)
|
|
|
|
DEFINE_INLINE_QI(IBLinkable, IUnknown)
|
|
DEFINE_INLINE_QI(IBRootLinkable, IBLinkable)
|
|
DEFINE_INLINE_QI(IClassFactory, IUnknown)
|
|
DEFINE_INLINE_QI(IBClass, IClassFactory)
|
|
|
|
DEFINE_INLINE_QI(IBOverrideBrowseLinks, IUnknown)
|
|
DEFINE_INLINE_QI(IBDataProvider2, IBDataProvider)
|
|
DEFINE_INLINE_QI2(IBPart2, IBPart, IBDataProvider2)
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
#if defined(WIN32)
|
|
# include "poppack.h"
|
|
#endif
|
|
|
|
#endif // OCF_BOLEINTF_H
|