home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / com / inole2 / chap18 / cosmo1.0 / oleglobl.h < prev    next >
C/C++ Source or Header  |  1995-05-03  |  7KB  |  208 lines

  1. /*
  2.  * OLEGLOBL.H
  3.  *
  4.  * Definitions an other globals specific to the OLE code.
  5.  *
  6.  * Copyright(c) Microsoft Corp. 1992-1994 All Rights Reserved
  7.  * Win32 version, January 1994
  8.  */
  9.  
  10. #ifdef MAKEOLESERVER
  11.  
  12. #ifndef CCHPATHMAX
  13. #define CCHPATHMAX          256
  14. #endif
  15.  
  16. #ifndef CCHFILENAME
  17. #define CCHFILENAMEMAX      15
  18. #endif
  19.  
  20.  
  21. typedef LPOLESERVER    FAR *LPLPOLESERVER;
  22. typedef LPOLESERVERDOC FAR *LPLPOLESERVERDOC;
  23. typedef LPOLEOBJECT    FAR *LPLPOLEOBJECT;
  24.  
  25. typedef LPVOID (WINAPI *LPVOIDPROC) (LPOLEOBJECT, LPSTR);
  26.  
  27.  
  28. typedef struct
  29.     {
  30.     LPOLEOBJECTVTBL     pvtbl;          //Standard
  31.     BOOL                fRelease;       //Flag to watch if we need to wait
  32.     LPOLECLIENT         pClient;        //Necessary for notifications
  33.     HLOCAL              hMem;           //Memory handle to this structure
  34.     } COSMOOBJECT;
  35.  
  36.  
  37. typedef COSMOOBJECT FAR *LPCOSMOOBJECT;
  38. #define CBCOSMOOBJECT sizeof(COSMOOBJECT)
  39.  
  40.  
  41. typedef struct
  42.     {
  43.     LPOLESERVERDOCVTBL  pvtbl;          //Standard
  44.     LHSERVERDOC         lh;             //Required by OleRegisterServerDoc
  45.     BOOL                fRelease;       //Flag to watch if we need to wait
  46.     ATOM                aObject;        //Name of the document's object
  47.     ATOM                aClient;        //Name of the connected client
  48.     HLOCAL              hMem;           //Memory handle to this structure
  49.     LPCOSMOOBJECT       pObj;           //Last object we allocated
  50.     } COSMODOC;
  51.  
  52.  
  53. typedef COSMODOC FAR *LPCOSMODOC;
  54. #define CBCOSMODOC sizeof(COSMODOC)
  55.  
  56.  
  57. typedef struct
  58.     {
  59.     LPOLESERVERVTBL     pvtbl;          //Standard
  60.     LHSERVER            lh;             //Required by OleRegisterServer
  61.     BOOL                fRelease;       //Flag to watch if we need to wait
  62.     BOOL                fEmbed;         //TRUE if we're embedding only
  63.     BOOL                fLink;          //TRUE if we're linking only
  64.     UINT                nCmdShow;       //OLE-modified window show command
  65.     HWND                hWnd;           //Main application window
  66.     HLOCAL              hMem;           //Memory handle to this structure
  67.     LPCOSMODOC          pDoc;           //Last document we allocated
  68.     } COSMOSERVER;
  69.  
  70. typedef COSMOSERVER FAR *LPCOSMOSERVER;
  71. #define CBCOSMOSERVER sizeof(COSMOSERVER)
  72.  
  73.  
  74. /*
  75.  * Single data structure holding any OLE-specific global variables.
  76.  */
  77.  
  78. typedef struct
  79.     {
  80.     LPCOSMOSERVER       pSvr;
  81.  
  82.     OLESERVERVTBL       vtblSvr;
  83.     OLESERVERDOCVTBL    vtblDoc;
  84.     OLEOBJECTVTBL       vtblObj;
  85.  
  86.     UINT                cfNative;
  87.     UINT                cfOwnerLink;
  88.     UINT                cfObjectLink;
  89.     } XOLEGLOBALS;
  90.  
  91. typedef XOLEGLOBALS FAR *LPXOLEGLOBALS;
  92. #define CBXOLEGLOBALS sizeof(XOLEGLOBALS)
  93.  
  94.  
  95. //The single global
  96. extern LPXOLEGLOBALS pOLE;
  97.  
  98.  
  99. /*
  100.  * STDTARGETDEVICE structure for ObjSetTargetDevice.
  101.  */
  102.  
  103.  
  104. typedef struct
  105.     {
  106.     //Offsets are pointers into the data field.
  107.     UINT    deviceNameOffset;   //szDeviceName
  108.     UINT    driverNameOffset;   //szDriverName
  109.     UINT    portNameOffset;     //szPortName
  110.     UINT    extDevModeOffset;   //DEVMODE structure
  111.     UINT    extDevModeSize;     //Size of the DEVMOCE struct, for versioning.
  112.     UINT    environmentOffset;  //Current MS-DOS environment, in a string
  113.     UINT    environmentSize;    //Length of environment string.
  114.     BYTE    data[];
  115.     } STDTARGETDEVICE;
  116.  
  117. typedef STDTARGETDEVICE FAR * LPSTDTARGETDEVICE;
  118. #define CBSTDTARGETDEVICE sizeof(STDTARGETDEVICE)
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125. /*
  126.  * Function prototypes for OLE-Specific functions.
  127.  */
  128.  
  129.  
  130.  
  131. //OLECLIP.C
  132. BOOL      WINAPI FOLECopyNative(LPXOLEGLOBALS);
  133. BOOL      WINAPI FOLECopyLink(LPXOLEGLOBALS, BOOL, LPSTR);
  134. HGLOBAL   WINAPI HLinkConstruct(LPSTR, LPSTR, LPSTR);
  135.  
  136.  
  137. //OLEDOC.C
  138. LPCOSMODOC  WINAPI PDocumentAllocate(LPOLESERVERDOCVTBL);   //Helper
  139. void        WINAPI DocumentClean(LPCOSMODOC);               //Helper
  140.  
  141. OLESTATUS WINAPI DocClose(LPCOSMODOC);
  142. OLESTATUS WINAPI DocGetObject(LPCOSMODOC, OLE_LPCSTR, LPLPOLEOBJECT, LPOLECLIENT);
  143. OLESTATUS WINAPI DocExecute(LPCOSMODOC, HGLOBAL);
  144. OLESTATUS WINAPI DocRelease(LPCOSMODOC);
  145. OLESTATUS WINAPI DocSave(LPCOSMODOC);
  146. OLESTATUS WINAPI DocSetColorScheme(LPCOSMODOC, OLE_CONST LOGPALETTE FAR *);
  147. OLESTATUS WINAPI DocSetDocDimensions(LPCOSMODOC, OLE_CONST RECT FAR *);
  148. OLESTATUS WINAPI DocSetHostNames(LPCOSMODOC, OLE_LPCSTR, OLE_LPCSTR);
  149.  
  150.  
  151. //OLEEXIT.C
  152. BOOL WINAPI FOLEExit(LPXOLEGLOBALS);
  153.  
  154.  
  155. //OLEFILE.C
  156. LPCOSMODOC WINAPI PDocRevokeAndCreate(LPXOLEGLOBALS);
  157.  
  158.  
  159. //OLEINIT.C
  160. BOOL      WINAPI FOLEInstanceInit(LPXOLEGLOBALS, HINSTANCE, LPSTR, LPSTR FAR *, UINT);
  161.  
  162.  
  163. //OLEMISC.C
  164. void      WINAPI MenuEmbeddingSet(HWND, LPSTR, BOOL);
  165. void      WINAPI OLEClientNotify(LPCOSMOOBJECT, UINT);
  166. BOOL      WINAPI FOLEReleaseWait(BOOL FAR *, LONG);
  167.  
  168.  
  169.  
  170. //OLEOBJ.C
  171. LPCOSMOOBJECT WINAPI PObjectAllocate(LPOLEOBJECTVTBL);
  172.  
  173. LPVOID        WINAPI ObjQueryProtocol(LPCOSMOOBJECT, OLE_LPCSTR);
  174. OLESTATUS     WINAPI ObjRelease(LPCOSMOOBJECT);
  175. OLESTATUS     WINAPI ObjShow(LPCOSMOOBJECT, BOOL);
  176. OLESTATUS     WINAPI ObjDoVerb(LPCOSMOOBJECT, UINT, BOOL, BOOL);
  177. OLESTATUS     WINAPI ObjGetData(LPCOSMOOBJECT, OLECLIPFORMAT, HGLOBAL FAR *);
  178. OLESTATUS     WINAPI ObjSetData(LPCOSMOOBJECT, OLECLIPFORMAT, HGLOBAL);
  179. OLESTATUS     WINAPI ObjSetTargetDevice(LPCOSMOOBJECT, HGLOBAL);
  180. OLESTATUS     WINAPI ObjSetBounds(LPCOSMOOBJECT, OLE_CONST RECT FAR *);
  181. OLECLIPFORMAT WINAPI ObjEnumFormats(LPCOSMOOBJECT, OLECLIPFORMAT);
  182. OLESTATUS     WINAPI ObjSetColorScheme(LPCOSMOOBJECT, OLE_CONST LOGPALETTE FAR *);
  183.  
  184.  
  185. //OLESVR.C
  186. LPCOSMOSERVER WINAPI PServerAllocate(LPOLESERVERVTBL);
  187.  
  188. OLESTATUS WINAPI ServerCreate(LPCOSMOSERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, LPLPOLESERVERDOC);
  189. OLESTATUS WINAPI ServerCreateFromTemplate(LPCOSMOSERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, OLE_LPCSTR, LPLPOLESERVERDOC);
  190. OLESTATUS WINAPI ServerEdit(LPCOSMOSERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, LPLPOLESERVERDOC);
  191. OLESTATUS WINAPI ServerExecute(LPCOSMOSERVER, HGLOBAL);
  192. OLESTATUS WINAPI ServerExit(LPCOSMOSERVER);
  193. OLESTATUS WINAPI ServerOpen(LPCOSMOSERVER, LHSERVERDOC, OLE_LPCSTR, LPLPOLESERVERDOC);
  194. OLESTATUS WINAPI ServerRelease(LPCOSMOSERVER);
  195.  
  196.  
  197. //OLEVTBL.C
  198. BOOL      WINAPI FOLEVtblInitServer(HINSTANCE,   LPOLESERVERVTBL);
  199. BOOL      WINAPI FOLEVtblInitDocument(HINSTANCE, LPOLESERVERDOCVTBL);
  200. BOOL      WINAPI FOLEVtblInitObject(HINSTANCE,   LPOLEOBJECTVTBL);
  201.  
  202. void      WINAPI OLEVtblFreeServer(LPOLESERVERVTBL);
  203. void      WINAPI OLEVtblFreeDocument(LPOLESERVERDOCVTBL);
  204. void      WINAPI OLEVtblFreeObject(LPOLEOBJECTVTBL);
  205.  
  206.  
  207. #endif //MAKEOLESERVER
  208.