home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 May / Pcwk5b98.iso / Borland / Cplus45 / BC45 / BOCOLE.PAK / BOLEINTF.H < prev    next >
C/C++ Source or Header  |  1995-08-29  |  16KB  |  392 lines

  1. //
  2. //**************************************************************************
  3. //
  4. // BOleIntf.h -- Contains the main interfaces (abstract base classes) used by
  5. //               Bolero to encapsulate OLE2 compound document functionality
  6. //
  7. // Copyright (c) 1993,94 by Borland International, Inc. All rights reserved
  8. //
  9. //**************************************************************************
  10.  
  11. #ifndef _boleintf_h
  12. #define _boleintf_h
  13.  
  14. #if ((defined __BORLANDC__) && (!defined WIN32))
  15. #pragma option -po-
  16. #endif
  17.  
  18. #include <BoleDefs.h>
  19.  
  20. #if ((defined __BORLANDC__) && (!defined WIN32))
  21. #pragma option -po-
  22. #endif
  23.  
  24. #ifdef WIN32
  25. #include "pshpack8.h"
  26. #endif
  27.  
  28. PREDECLARE_INTERFACE( IBClassMgr )
  29. PREDECLARE_INTERFACE( IBPart )
  30. PREDECLARE_INTERFACE( IBService )
  31. PREDECLARE_INTERFACE( IBLinkable)
  32. PREDECLARE_INTERFACE( IBRootLinkable)
  33. PREDECLARE_INTERFACE( IBContains)
  34. PREDECLARE_INTERFACE( IBDocument )
  35. PREDECLARE_INTERFACE( IBContainer )
  36. PREDECLARE_INTERFACE( IBSite )
  37. PREDECLARE_INTERFACE( IBApplication )
  38. PREDECLARE_INTERFACE( IBLinkInfo)
  39. PREDECLARE_INTERFACE( IBDataNegotiator)
  40. PREDECLARE_INTERFACE( IBDataProvider)
  41. PREDECLARE_INTERFACE( IBDataConsumer)
  42. PREDECLARE_INTERFACE( IBWindow)
  43. PREDECLARE_INTERFACE( IBDropDest)
  44. PREDECLARE_INTERFACE( IBClass)
  45. PREDECLARE_INTERFACE( IBOverrideBrowseLinks)
  46. PREDECLARE_INTERFACE( IBSite2)
  47. PREDECLARE_INTERFACE( IBOverrideHelpButton)
  48. PREDECLARE_INTERFACE( IBPart2 )
  49. PREDECLARE_INTERFACE( IBDataProvider2 )
  50.  
  51. // IClassMgr abstract base class
  52. //
  53. class _ICLASS IBClassMgr : public IUnknown {
  54. public:
  55.  
  56.    virtual HRESULT _IFUNC ComponentCreate(
  57.                 PIUnknown FAR* ppRet,
  58.                 PIUnknown pAggregator,
  59.                 BCID            idClass
  60.                 )       = 0;
  61.    virtual HRESULT _IFUNC ComponentInfoGet(
  62.                 PIUnknown FAR* ppInfo,
  63.                 PIUnknown pAggregator,
  64.                 BCID            idClass
  65.                 )       = 0;
  66. };
  67.  
  68. // IBDataNegotiator -- Enumerats formats for drag/drop and paste
  69. //
  70. class _ICLASS IBDataNegotiator : public IUnknown {
  71.   public:
  72.  
  73.     virtual UINT                _IFUNC CountFormats ()                       = 0;
  74.     virtual HRESULT     _IFUNC GetFormat (UINT, BOleFormat FAR*)     = 0;
  75. };
  76.  
  77. // IBDataConsumer -- Supported by containers who want to accept drag/drop
  78. //                   and paste. No new methods over the negotiator, so
  79. //                   this is just a placeholder for the consumer name.
  80. //
  81. class _ICLASS IBDataConsumer : public IBDataNegotiator {
  82. };
  83.  
  84. // IBDataProvider -- Supported by parts and/or sites which can be
  85. //                   copied to the OLE2 clipboard
  86. //
  87. class _ICLASS IBDataProvider : public IBDataNegotiator {
  88.   public:
  89.  
  90.     virtual HANDLE _IFUNC GetFormatData (BOleFormat FAR*)              = 0;
  91.          virtual HRESULT _IFUNC Draw (HDC,LPCRECTL,LPCRECTL,BOleAspect,
  92.                                         BOleDraw bd = BOLE_DRAW_NONE)      = 0;
  93.     virtual HRESULT _IFUNC GetPartSize (LPSIZE)                        = 0;
  94.     virtual HRESULT _IFUNC Save (IStorage FAR*, BOOL fSamAsLoad,
  95.                                                 BOOL fRemember)        = 0;
  96. };
  97.  
  98. // IBDataProvider2 -- new version of IBDataProvider
  99. //
  100. class _ICLASS IBDataProvider2 : public IBDataProvider {
  101.   public:
  102.  
  103.     virtual HRESULT _IFUNC SetFormatData (BOleFormat FAR* fmt, HANDLE data, BOOL release) = 0;
  104. };
  105.  
  106. // IBPart -- Supported by server objects
  107. //
  108. class _ICLASS IBPart : public IBDataProvider {
  109.   public:
  110.  
  111.     virtual HRESULT _IFUNC Init (PIBSite,BOleInitInfo FAR*)         = 0;
  112.     virtual HRESULT _IFUNC Close ()                                                         = 0;
  113.     virtual HRESULT _IFUNC CanOpenInPlace ()                        = 0;
  114.     virtual HRESULT _IFUNC SetPartSize (LPSIZE)                     = 0;
  115.     virtual HRESULT _IFUNC SetPartPos (LPRECT)                      = 0;
  116.     virtual HRESULT _IFUNC Activate (BOOL)                          = 0;
  117.     virtual HRESULT _IFUNC Show (BOOL)                              = 0;
  118.     virtual HRESULT _IFUNC Open (BOOL)                              = 0;
  119.     virtual HRESULT _IFUNC EnumVerbs (BOleVerb FAR*)                = 0;
  120.     virtual HRESULT _IFUNC DoVerb (UINT)                            = 0;
  121.     virtual HWND    _IFUNC OpenInPlace (HWND)                       = 0;
  122.     virtual HRESULT _IFUNC InsertMenus (HMENU,BOleMenuWidths FAR*)  = 0;
  123.     virtual HRESULT _IFUNC ShowTools (BOOL)                         = 0;
  124.     virtual void    _IFUNC FrameResized (LPCRECT,BOOL)              = 0;
  125.     virtual HRESULT _IFUNC DragFeedback (LPPOINT,BOOL)              = 0;
  126.     virtual HRESULT _IFUNC GetPalette (LPLOGPALETTE FAR*)           = 0;
  127.          virtual HRESULT _IFUNC SetHost (PIBContainer pObjContainer)     = 0;
  128.          virtual HRESULT _IFUNC DoQueryInterface(REFIID iid, void FAR* FAR* pif)= 0;
  129.  
  130.          virtual LPOLESTR _IFUNC GetName (BOlePartName)                  = 0;
  131. };
  132.  
  133.  
  134. // IBPart2 -- Supported by server objects
  135. //
  136. class _ICLASS IBPart2 : public IBPart,
  137.                         public IBDataProvider2 {
  138. };
  139.  
  140. // IService abstract base class
  141. //
  142. class _ICLASS IBService : public IUnknown {
  143.   public:
  144.  
  145.     virtual void     _IFUNC OnResize ()                           = 0;
  146.     virtual void     _IFUNC OnActivate (BOOL)                     = 0;
  147.     virtual HRESULT  _IFUNC OnModalDialog (BOOL)                  = 0;
  148.     virtual HRESULT  _IFUNC OnSetFocus(BOOL)                      = 0;
  149.  
  150.     virtual HRESULT  _IFUNC Init (PIBApplication)                 = 0;
  151.     virtual HRESULT  _IFUNC RegisterClass (LPCOLESTR,PIBClassMgr,BCID,
  152.                               BOOL fEmbedInSelf, BOOL fSingleUse) = 0;
  153.     virtual HRESULT  _IFUNC UnregisterClass (LPCOLESTR)           = 0;
  154.     virtual HRESULT  _IFUNC TranslateAccel (LPMSG)                = 0;
  155.     virtual BOleHelp _IFUNC HelpMode (BOleHelp)                   = 0;
  156.          virtual HRESULT  _IFUNC CanClose ()                           = 0;
  157.  
  158.          virtual HRESULT  _IFUNC BrowseClipboard (BOleInitInfo FAR*)    = 0;
  159.          virtual HRESULT  _IFUNC Browse (BOleInitInfo FAR*)            = 0;
  160.  
  161.          virtual HRESULT        _IFUNC Paste (BOleInitInfo FAR*)                                        = 0;
  162.          virtual HRESULT  _IFUNC Clip (PIBDataProvider, BOOL, BOOL, BOOL) = 0;
  163.     virtual HRESULT  _IFUNC Drag (PIBDataProvider, BOleDropAction, BOleDropAction FAR*)                 = 0;
  164.          virtual IStorage FAR* _IFUNC CreateStorageOnFile (LPCOLESTR, BOOL) = 0;
  165.          virtual HRESULT _IFUNC ConvertUI (PIBPart, BOOL,
  166.                                       BOleConvertInfo FAR*)       = 0;
  167.          virtual HRESULT _IFUNC ConvertGuts (PIBPart, BOOL,
  168.                                         BOleConvertInfo FAR*)     = 0;
  169.     virtual BOleMenuEnable _IFUNC EnableEditMenu (BOleMenuEnable,
  170.                                                   PIBDataConsumer)= 0;
  171. };
  172.  
  173. // ILinkable abstract base class
  174. //
  175. class _ICLASS IBLinkable : public IUnknown {
  176. public:
  177.  
  178.         virtual HRESULT _IFUNC GetMoniker(IMoniker FAR* FAR* ppMon)    = 0;
  179.         virtual HRESULT _IFUNC OnRename(PIBLinkable pContainer, LPCOLESTR szName) = 0;
  180.                                                                          // pass NULL szName when Doc closes
  181.                                                                          // pass boledoc for pContainer if root part (file)
  182. };
  183. class _ICLASS IBRootLinkable : public IBLinkable {
  184. public:
  185.  
  186.         virtual HRESULT _IFUNC Init (PIBContains pC, LPCOLESTR szProgId) = 0;
  187.    virtual HRESULT _IFUNC SetMoniker (IMoniker FAR* pMon)           = 0;
  188. };
  189. /*
  190.  * on BOleLinkDoc used by Part servers and Linking Containers
  191.  * on BOleSite          used by parts
  192.  */
  193.  
  194. // IContains abstract base class
  195. //
  196. class _ICLASS IBContains : public IUnknown {
  197. public:
  198.  
  199.         virtual HRESULT _IFUNC Init(LPCOLESTR)                               = 0;
  200.         virtual HRESULT _IFUNC GetPart(PIBPart FAR*, LPCOLESTR)              = 0;
  201. };
  202. /*
  203.  * on linkable containers (all Containers with BOleLinkDoc helper)
  204.  * on linkable server documents (with BOleLinkDoc helper)
  205.  * on intermediate parts  (in addition to IPart)
  206.  */
  207.  
  208. // IBDocument -- Supported by BOleDocument one per container child window
  209. //
  210. class _ICLASS IBDocument : public IUnknown {
  211. public:
  212.  
  213.         virtual HRESULT _IFUNC Init (PIBContainer)                         = 0;
  214.         virtual void    _IFUNC OnResize ()                                 = 0;
  215.         virtual void    _IFUNC OnActivate (BOOL)                           = 0;
  216.         virtual void    _IFUNC OnClose ()                                  = 0;
  217.         virtual HRESULT _IFUNC OnSetFocus(BOOL)                            = 0;
  218.  
  219.         virtual HRESULT _IFUNC EnumLinks (PIBLinkInfo FAR*)                = 0;
  220.         virtual HRESULT _IFUNC BrowseLinks ()                              = 0;
  221.         virtual HRESULT _IFUNC UpdateLinks ()                              = 0;
  222. };
  223.  
  224.  
  225.  
  226. // IBWindow -- Supported on child window *and* frame window of container apps
  227. //
  228. class _ICLASS IBWindow : public IUnknown {
  229. public:
  230.          virtual HWND     _IFUNC GetWindow ()                               = 0;
  231.     virtual HRESULT  _IFUNC GetWindowRect (LPRECT)                     = 0;
  232.     virtual LPCOLESTR _IFUNC GetWindowTitle ()                         = 0;
  233.     virtual void     _IFUNC AppendWindowTitle (LPCOLESTR)              = 0;
  234.     virtual HRESULT  _IFUNC SetStatusText (LPCOLESTR)                  = 0;
  235.  
  236.     virtual HRESULT  _IFUNC RequestBorderSpace (LPCRECT)               = 0;
  237.     virtual HRESULT  _IFUNC SetBorderSpace (LPCRECT)                   = 0;
  238.  
  239.     virtual HRESULT  _IFUNC InsertContainerMenus (HMENU,BOleMenuWidths FAR*)    = 0;
  240.     virtual HRESULT  _IFUNC SetFrameMenu (HMENU)                       = 0;
  241.     virtual void     _IFUNC RestoreUI ()                               = 0;
  242.     virtual HRESULT  _IFUNC Accelerator (LPMSG)                                                           = 0;
  243.          virtual HRESULT  _IFUNC GetAccelerators (HACCEL FAR*, int FAR*)    = 0;
  244. };
  245.  
  246. // IBContainer -- Supported by container app's document window
  247. //
  248. class _ICLASS IBContainer : public IBWindow {
  249.   public:
  250.     virtual HRESULT  _IFUNC FindDropDest (LPPOINT, PIBDropDest FAR*) = 0;
  251.          virtual HRESULT  _IFUNC AllowInPlace ()                          = 0;
  252.          virtual HRESULT  _IFUNC BringToFront ()                          = 0;
  253. };
  254.  
  255. // IBDropDest -- Supported by container app's document window and/or other
  256. //               areas inside the window.
  257. //
  258. class _ICLASS IBDropDest : public IBDataConsumer {
  259.   public:
  260.     virtual HRESULT  _IFUNC Drop (BOleInitInfo FAR*, LPPOINT, LPCRECT) = 0;
  261.          virtual void     _IFUNC DragFeedback (LPPOINT, LPCRECT,
  262.                                       BOleMouseAction, UINT, HRESULT&) = 0;
  263.     virtual HRESULT  _IFUNC Scroll (BOleScroll scrollDir)              = 0;
  264.          virtual HRESULT  _IFUNC GetScrollRect (LPRECT)                     = 0;
  265. };
  266.  
  267. // IBApplication -- Supported at frame window/app object of container apps
  268. //
  269. class _ICLASS IBApplication : public IBWindow {
  270.   public:
  271.  
  272.     virtual LPCOLESTR   _IFUNC GetAppName ()                           = 0;
  273.     virtual BOleHelp _IFUNC HelpMode (BOleHelp)                        = 0;
  274.     virtual HRESULT  _IFUNC CanLink ()                                 = 0;
  275.     virtual HRESULT  _IFUNC CanEmbed ()                                = 0;
  276.     virtual HRESULT  _IFUNC IsMDI ()                                   = 0;
  277.     virtual HRESULT  _IFUNC OnModalDialog (BOOL)                       = 0;
  278.          virtual void     _IFUNC DialogHelpNotify (BOleDialogHelp)          = 0;
  279.          virtual void           _IFUNC ShutdownMaybe ()                                                                   = 0;
  280. };
  281.  
  282. // IBSite -- Supported by container apps for each linked/embedded object
  283. //
  284. class _ICLASS IBSite : public IUnknown {
  285.   public:
  286.  
  287.    virtual HRESULT _IFUNC SiteShow (BOOL)                             = 0;
  288.    virtual HRESULT _IFUNC DiscardUndo ()                              = 0;
  289.    virtual HRESULT _IFUNC GetSiteRect (LPRECT,LPRECT)                 = 0;
  290.    virtual HRESULT _IFUNC SetSiteRect (LPCRECT)                       = 0;
  291.    virtual HRESULT _IFUNC SetSiteExtent (LPCSIZE)                     = 0;
  292.         virtual HRESULT _IFUNC GetZoom(BOleScaleFactor FAR* pScale)        = 0;
  293.    virtual void    _IFUNC Invalidate (BOleInvalidate)                 = 0;
  294.    virtual void    _IFUNC OnSetFocus(BOOL)                            = 0;
  295.         virtual HRESULT _IFUNC Init (PIBDataProvider, PIBPart, LPCOLESTR, BOOL)     = 0;
  296.         virtual void    _IFUNC Disconnect ()                                               = 0;
  297. };
  298.  
  299. // IBSite2 -- Add flexibility to have parent of site not be container
  300. //
  301. class _ICLASS IBSite2 : public IBSite {
  302.         public:
  303.  
  304.         virtual HRESULT _IFUNC GetParentWindow (HWND FAR*)                 = 0;
  305. };
  306.  
  307. // IBLinkInfo -- Supported by BOleParts which are link objects
  308. //
  309. class _ICLASS IBLinkInfo : public IUnknown {
  310.   public:
  311.  
  312.     virtual HRESULT _IFUNC SourceBreak ()                              = 0;
  313.     virtual HRESULT _IFUNC SourceGet (LPOLESTR, UINT count)            = 0;
  314.     virtual HRESULT _IFUNC SourceSet (LPOLESTR)                        = 0;
  315.     virtual HRESULT _IFUNC SourceOpen ()                               = 0;
  316.     virtual HRESULT _IFUNC UpdateGet (BOleLinkUpdate FAR*)             = 0;
  317.     virtual HRESULT _IFUNC UpdateSet (BOleLinkUpdate)                  = 0;
  318.     virtual HRESULT _IFUNC UpdateNow ()                                = 0;
  319. };
  320.  
  321. // IBClass -- Supported by BOleFactory
  322. //
  323. class _ICLASS IBClass : public IClassFactory {
  324.   public:
  325.           virtual HRESULT _IFUNC Init(BOOL fSelfEmbed, LPCOLESTR pszProgId, IBClassMgr *pCM, BCID rid) = 0;
  326.           virtual HRESULT _IFUNC Register(BOOL fSingleUse) = 0;
  327.           virtual HRESULT _IFUNC Revoke()                                                                                 = 0;
  328.           virtual HRESULT       _IFUNC GetClassID(LPCLSID pOut)                = 0;
  329.           virtual BOOL  _IFUNC IsA(REFCLSID pOut)                                                                 = 0;
  330.           virtual BOOL _IFUNC AllowEmbedFromSelf()                                                        = 0;
  331.           virtual HRESULT _IFUNC GetEmbeddingHelperFactory(LPUNKNOWN *ppF)  = 0;
  332. };
  333.  
  334. // IBOverrideBrowseLinks -- Supported by containers (who aggregate BOleDoc)
  335. //                          who want to override our BrowseLinks dialog.
  336. //
  337. class _ICLASS IBOverrideBrowseLinks : public IUnknown {
  338.   public:
  339.     virtual HRESULT    _IFUNC BrowseLinks ()                        = 0;
  340. };
  341.  
  342. // IBOverrideHelpButton -- Supported by container apps (who aggregate
  343. //                         BOleService) who want to suppress the help
  344. //                         button in our dialogs.
  345. //
  346. class _ICLASS IBOverrideHelpButton : public IUnknown {
  347.   public:
  348.     virtual HRESULT    _IFUNC ShowHelpButton (BOleDialogHelp) = 0;
  349. };
  350.  
  351. DEFINE_INLINE_QI( IBDataNegotiator, IUnknown)
  352. DEFINE_INLINE_QI( IBDataConsumer, IUnknown)
  353. DEFINE_INLINE_QI( IBDropDest, IBDataConsumer)
  354. DEFINE_INLINE_QI( IBDataProvider, IBDataNegotiator)
  355. DEFINE_INLINE_QI( IBPart, IBDataProvider)
  356.  
  357. DEFINE_INLINE_QI( IBWindow, IUnknown)
  358. DEFINE_INLINE_QI( IBContainer, IBWindow)
  359. DEFINE_INLINE_QI( IBApplication, IBWindow)
  360.  
  361. DEFINE_INLINE_QI( IBDocument, IUnknown)
  362. DEFINE_INLINE_QI( IBService, IUnknown)
  363. DEFINE_INLINE_QI( IBClassMgr, IUnknown)
  364. DEFINE_INLINE_QI( IBLinkInfo, IUnknown)
  365. DEFINE_INLINE_QI( IBSite, IUnknown)
  366. DEFINE_INLINE_QI( IBSite2, IBSite)
  367. DEFINE_INLINE_QI( IBContains, IUnknown)
  368.  
  369. DEFINE_INLINE_QI( IBLinkable, IUnknown)
  370. DEFINE_INLINE_QI( IBRootLinkable, IBLinkable)
  371. DEFINE_INLINE_QI( IClassFactory, IUnknown)
  372. DEFINE_INLINE_QI( IBClass, IClassFactory)
  373.  
  374. DEFINE_INLINE_QI( IBOverrideBrowseLinks, IUnknown)
  375. DEFINE_INLINE_QI( IBOverrideHelpButton, IUnknown)
  376.  
  377. DEFINE_INLINE_QI( IBDataProvider2, IBDataProvider)
  378. DEFINE_INLINE_QI2(IBPart2, IBPart, IBDataProvider2)
  379.  
  380.  
  381. #if ((defined __BORLANDC__) && (!defined WIN32))
  382. #pragma option -po.
  383. #endif
  384.  
  385. #ifdef WIN32
  386. #include "poppack.h"
  387. #endif
  388.  
  389. #endif
  390.  
  391.  
  392.