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

  1. //
  2. //**************************************************************************
  3. //
  4. // BOleDefs.h -- Contains the main constants and structures used by Bolero
  5. //               to encapsulate OLE2 compound document functionality.
  6. //
  7. // Copyright (c) 1993,94 by Borland International, Inc. All rights reserved
  8. //
  9. //**************************************************************************
  10.  
  11. #ifndef BOLEDEFS_H
  12. #define BOLEDEFS_H
  13.  
  14. #include <bolever.h>
  15. #include <bcom.h>
  16.  
  17.  
  18. #ifdef WIN32
  19.         #define BOLEDLL TEXT("BOLE32.DLL")
  20. #else
  21.         #define BOLEDLL TEXT("BOLE16.DLL")
  22. #endif
  23.  
  24. #ifdef WIN32
  25. #include "pshpack8.h"
  26. #endif
  27.  
  28. #define BOLEBIND TEXT("CREATECLASSMGR")
  29.  
  30.  
  31. /*
  32.  *              Useful OLE2.H  declarations
  33.  */
  34.  
  35. #if !defined(WIN32) && !defined (__WINDOWS_H) && !defined (_INC_WINDOWS)
  36.  
  37.         typedef struct tagPOINT
  38.         {
  39.         int x;
  40.         int y;
  41.         } POINT;
  42.         typedef POINT FAR*  LPPOINT;
  43.  
  44.         typedef struct tagRECT
  45.         {
  46.         int left;
  47.         int top;
  48.         int right;
  49.         int bottom;
  50.         } RECT;
  51.         typedef RECT FAR*  LPRECT;
  52.  
  53. #endif
  54.  
  55. #if !defined (_OLE2_H_)
  56.  
  57.         #ifdef WIN32
  58.                 #define LPRECTL PRECTL
  59.         #else
  60.                 typedef struct FARSTRUCT tagRECTL
  61.                 {
  62.                 long    left;
  63.                 long    top;
  64.                 long    right;
  65.                 long    bottom;
  66.                 } RECTL, FAR* LPRECTL;
  67.  
  68.                 typedef struct FARSTRUCT tagPOINTL {
  69.                 LONG x;
  70.                 LONG y;
  71.                 } POINTL;
  72.  
  73.         #endif
  74.  
  75.         #ifndef LPCRECT
  76.                 typedef const RECT FAR* LPCRECT;
  77.         #endif
  78.  
  79.         #ifndef LPCRECTL
  80.                 typedef const RECTL FAR* LPCRECTL;
  81.         #endif
  82.  
  83.         //  opaque pass throughs
  84.  
  85.         struct _ICLASS IMoniker;
  86.         struct _ICLASS IStorage;
  87.         struct _ICLASS IDataObject;
  88.  
  89. #endif
  90.  
  91. typedef const SIZE FAR* LPCSIZE;
  92.  
  93. #if ((defined __BORLANDC__) && (!defined WIN32))
  94. #pragma option -po-
  95. #endif
  96.  
  97. class _ICLASS IBContainer; // forward reference
  98.  
  99. #if ((defined __BORLANDC__) && (!defined WIN32))
  100. #pragma option -po.
  101. #endif
  102.  
  103. /*
  104.  * BOLERO linking and embedding parameter typedefs
  105.  */
  106.  
  107. typedef long Coord;
  108. #define HIMETRIC_PER_INCH   2540      // number HIMETRIC units per inch
  109.  
  110. // MAP_PIX_TO_LOGHIM / MAP_LOGHIM_TO_PIX --
  111. //
  112. // The OLE2-defined macros for these guys don't round. Our versions
  113. // add half the denominator so that the truncated result of the integer
  114. // division is rounded to the nearest integer. e.g. 9/10 truncates to 0,
  115. // instead of rounding to 1, so add 5/10 which makes 14/10 which truncates
  116. // to 1 which simulates rounding.
  117. //
  118. #ifdef MAP_PIX_TO_LOGHIM
  119. #undef MAP_PIX_TO_LOGHIM
  120. #endif
  121. #define MAP_PIX_TO_LOGHIM(pixel, pixelsPerInch) \
  122.         ((ULONG) ((((ULONG)HIMETRIC_PER_INCH) * pixel + (pixelsPerInch >> 1)) / pixelsPerInch))
  123.  
  124. #ifdef MAP_LOGHIM_TO_PIX
  125. #undef MAP_LOGHIM_TO_PIX
  126. #endif
  127. #define MAP_LOGHIM_TO_PIX(hiMetric, pixelsPerInch) \
  128.     (UINT) ((((double) hiMetric) * pixelsPerInch + (HIMETRIC_PER_INCH >> 1)) / HIMETRIC_PER_INCH)
  129.  
  130. #if defined(INIT_BGUID)
  131.   #define DEFINE_BOLEGUID(name, l) \
  132.      EXTERN_C __export const GUID CDECL FAR name = { l, 0, 0, {0xC0,0,0,0,0,0,0,0x46} }
  133. #else
  134.   #define DEFINE_BOLEGUID(name, l) \
  135.      EXTERN_C const GUID CDECL FAR name
  136. #endif
  137.  
  138. DEFINE_BOLEGUID(IID_IBPart,          0x02A104L);
  139. DEFINE_BOLEGUID(IID_IBSite,          0x02A105L);
  140. DEFINE_BOLEGUID(IID_IBContainer,     0x02A106L);
  141. DEFINE_BOLEGUID(IID_IBDocument,      0x02A107L);
  142. DEFINE_BOLEGUID(IID_IBService,       0x02A108L);
  143. DEFINE_BOLEGUID(IID_IBApplication,   0x02A109L);
  144. DEFINE_BOLEGUID(IID_IBClassMgr,      0x02A10AL);
  145. DEFINE_BOLEGUID(IID_IBLinkInfo,      0x02A10BL);
  146. DEFINE_BOLEGUID(IID_IBLinkable,      0x02A10CL);
  147. DEFINE_BOLEGUID(IID_IBRootLinkable,  0x02A10DL);
  148. DEFINE_BOLEGUID(IID_IBContains,      0x02A10EL);
  149. DEFINE_BOLEGUID(IID_BOleDocument,    0x02A10FL);
  150. DEFINE_BOLEGUID(IID_BOlePart,        0x02A110L);
  151. DEFINE_BOLEGUID(IID_IBDataConsumer,  0x02A111L);
  152. DEFINE_BOLEGUID(IID_IBDataProvider,  0x02A112L);
  153. DEFINE_BOLEGUID(IID_IBWindow,        0x02A113L);
  154. DEFINE_BOLEGUID(IID_IBDataNegotiator,0x02A114L);
  155. DEFINE_BOLEGUID(IID_IBDropDest,      0x02A115L);
  156. DEFINE_BOLEGUID(IID_BOleShadowData,  0x02A116L);
  157. DEFINE_BOLEGUID(IID_IBClass,         0x02A117L);
  158. DEFINE_BOLEGUID(IID_IBOverrideBrowseLinks,         0x02A118L);
  159. DEFINE_BOLEGUID(IID_BOleSite,        0x02A119L);
  160. DEFINE_BOLEGUID(IID_IBSite2,         0x02A11AL);
  161. DEFINE_BOLEGUID(IID_IBOverrideHelpButton,  0x02A11BL);
  162. DEFINE_BOLEGUID(IID_IBDataProvider2,  0x02A11CL);
  163. DEFINE_BOLEGUID(IID_IBPart2,          0x02A11DL);
  164.  
  165. // Bolero Class ids  for instantiating bolero objects (helpers)
  166.  
  167. typedef ULONG BCID;
  168.  
  169. const BCID      cidBOleService          = 1L;   //
  170. const BCID      cidBOleDocument         = 2L;   // helper for containers
  171. const BCID      cidBOlePart             = 3L;   // helper for sites
  172. const BCID      cidBOleSite             = 4L;   // helper for parts
  173. const BCID      cidBOleInProcSite       = 5L;   // helper for parts
  174. const BCID      cidBOleContainer        = 6L;   // helper for part documents
  175. const BCID      cidBOleData             = 7L;   // helper for data transfer
  176. const BCID      cidBOleFactory          = 8L;   // helper for class factory
  177. const BCID      cidBOleShadowData       = 9L;   // helper for non delayed rendering
  178. const BCID      cidBOleInProcHandler    = 10L;  // helper for dll handler parts
  179. //const BCID      cidBOlePart2            = 11L;  // helper for parts
  180.  
  181.  
  182. typedef enum {
  183.         BOLE_MED_NULL    = 0,
  184.         BOLE_MED_HGLOBAL = 1,
  185.         BOLE_MED_FILE    = 2,
  186.         BOLE_MED_STREAM  = 4,
  187.         BOLE_MED_STORAGE = 8,
  188.         BOLE_MED_GDI     = 16,
  189.         BOLE_MED_MFPICT  = 32, // leave room for any new OLE mediums
  190.         BOLE_MED_STATIC  = 1024
  191. } BOleMedium;
  192.  
  193. typedef enum {
  194.         BOLE_HELP_EXIT,
  195.         BOLE_HELP_ENTER,
  196.         BOLE_HELP_GET
  197. } BOleHelp;
  198.  
  199. typedef enum {
  200.         BOLE_MOUSEENTER = 1,
  201.         BOLE_MOUSECONTAINED = 2,
  202.         BOLE_MOUSEEXIT = 3
  203. } BOleMouseAction;
  204.  
  205. typedef enum {
  206.         BOLE_DROP_NONE = 0,
  207.         BOLE_DROP_COPY = 1,
  208.         BOLE_DROP_MOVE = 2,
  209.         BOLE_DROP_LINK = 4
  210. } BOleDropAction;
  211.  
  212. typedef enum {
  213.     BOLE_CONTENT                = 1,
  214.     BOLE_THUMBNAIL      = 2,
  215.     BOLE_ICON                   = 4,
  216.     BOLE_DOCPRINT       = 8,
  217.          BOLE_DEFAULT           = 16,
  218.          BOLE_ASPECT_MAINTAIN = 32,
  219.          BOLE_CLIP = 64
  220. } BOleAspect;
  221.  
  222. typedef enum {
  223.         BOLE_DRAW_NONE        = 0,
  224.         BOLE_DRAW_SHADINGONLY = 1,
  225.         BOLE_DRAW_SHOWOBJECTS = 2
  226. } BOleDraw;
  227.  
  228. typedef enum {
  229.         BOLE_SCROLL_UP  = 1,
  230.         BOLE_SCROLL_DOWN        = 2,
  231.         BOLE_SCROLL_LEFT        = 4,
  232.         BOLE_SCROLL_RIGHT = 8
  233. } BOleScroll;
  234.  
  235. typedef enum {
  236.         BOLE_NAME_LONG  = 1,
  237.         BOLE_NAME_SHORT = 2,
  238.         BOLE_NAME_APP   = 3
  239. } BOlePartName;
  240.  
  241. typedef enum {
  242.         BOLE_HELP_BROWSE,
  243.         BOLE_HELP_BROWSECLIPBOARD,
  244.         BOLE_HELP_CONVERT,
  245.         BOLE_HELP_BROWSELINKS,
  246.         BOLE_HELP_CHANGEICON,
  247.         BOLE_HELP_FILEOPEN,
  248.         BOLE_HELP_SOURCESET,
  249.         BOLE_HELP_ICONFILEOPEN
  250. } BOleDialogHelp;
  251.  
  252. typedef enum {
  253.         BOLE_ENABLE_PASTE           = 1,
  254.         BOLE_ENABLE_PASTELINK       = 2,
  255.         BOLE_ENABLE_BROWSECLIPBOARD = 4,
  256.         BOLE_ENABLE_BROWSELINKS     = 8
  257. } BOleMenuEnable;
  258.  
  259. typedef enum {
  260.         BOLE_INVAL_DATA       = 1,
  261.         BOLE_INVAL_VIEW       = 2,
  262.         BOLE_INVAL_PERSISTENT = 4
  263. } BOleInvalidate;
  264.  
  265. typedef struct FAR {
  266.         LPCOLESTR       typeName;
  267.         LPCOLESTR       verbName;
  268.         UINT            verbIndex;
  269.         BOOL            fCanDirty;
  270. } BOleVerb;
  271.  
  272. typedef struct FAR {
  273.     LONG    width[6];
  274. } BOleMenuWidths;
  275.  
  276. typedef struct FAR {
  277.         UINT fmtId;
  278.         OLECHAR fmtName[32];
  279.         OLECHAR fmtResultName[32];
  280.         BOleMedium fmtMedium;
  281.         BOOL fmtIsLinkable;
  282. } BOleFormat;
  283.  
  284. typedef enum {
  285.         BOLE_CONVERT_TO_CLSID   = 1,
  286.         BOLE_ACTIVATE_AS_CLSID  = 2,
  287.         BOLE_ASPECT_TO_ICON             = 4,
  288.         BOLE_ASPECT_TO_CONTENT  = 8
  289. } BOleConvertAction;
  290.  
  291. typedef enum {
  292.   BOLE_LINK,
  293.   BOLE_EMBED,
  294.   BOLE_EMBED_ASMETAFILE,
  295.   BOLE_EMBED_ASBITMAP
  296. } InitHow;
  297.  
  298. typedef enum {
  299.   BOLE_FILE,
  300.   BOLE_STORAGE,
  301.   BOLE_DATAOBJECT,
  302.   BOLE_NEW,
  303.   BOLE_HANDLE
  304. } InitWhere;
  305.  
  306. typedef struct FAR {
  307.         InitHow How;
  308.         InitWhere Where;
  309.         IBContainer FAR* pContainer;
  310.  
  311.         HICON hIcon;
  312.  
  313.         IStorage *pStorage;
  314.         union {
  315.                 struct {                // where == BOLE_FILE
  316.                         LPCOLESTR pPath;
  317.                 } whereFile;
  318.                 struct {                // where == BOLE_DATAOBJECT
  319.                         IDataObject *pData;
  320.                 } whereData;
  321.                 struct {                // where == BOLE_NEW
  322.                         BCID cid;
  323. //
  324.                 } whereNew;
  325.                 struct {                // where == BOLE_HANDLE
  326.                         HANDLE data;
  327.                         UINT dataFormat;
  328.                 } whereHandle;
  329.         };
  330.         inline LONG ReleaseDataObject()
  331.         { return ((Where == BOLE_DATAOBJECT) && whereData.pData) ?
  332.                 ((IUnknown *)whereData.pData)->Release() :
  333.                 0;
  334.         }
  335.  
  336. } BOleInitInfo;
  337.  
  338. typedef enum {
  339.         BOLE_UPDATE_AUTO   = 1,
  340.         BOLE_UPDATE_MANUAL = 3
  341. } BOleLinkUpdate;
  342.  
  343. typedef struct FAR {
  344.         ULONG       xN;      // numerator in x direction
  345.         ULONG       xD;      // denominator in x direction
  346.         ULONG       yN;      // numerator in y direction
  347.         ULONG       yD;      // denominator in y direction
  348. } BOleScaleFactor;
  349.  
  350. // This tagged union allows macro record/playback on the Convert dialog
  351. //
  352. typedef struct FAR {
  353.         BOleConvertAction action;
  354.         CLSID clsidNew;
  355.         HGLOBAL hIcon;
  356. } BOleConvertInfo;
  357.  
  358. // Entry Points
  359. //
  360. extern "C" {
  361.         extern HRESULT PASCAL FAR _export CreateClassMgr (PIUnknown FAR*pCM, PIUnknown pOut, IMalloc FAR*);
  362. }
  363. inline PIUnknown CreateClassMgr( PIUnknown pOut = NULLP, IMalloc FAR* pMalloc = NULLP)
  364. {
  365.         PIUnknown tmpCM;
  366.         return CreateClassMgr(&tmpCM, pOut, pMalloc) == NOERROR ? tmpCM : NULLP;
  367. }
  368.  
  369. #ifdef WIN32
  370. #include "poppack.h"
  371. #endif
  372.  
  373. #endif
  374.  
  375.