summaryrefslogtreecommitdiff
path: root/iup/srcole/tLegacy.h
diff options
context:
space:
mode:
Diffstat (limited to 'iup/srcole/tLegacy.h')
-rwxr-xr-xiup/srcole/tLegacy.h550
1 files changed, 550 insertions, 0 deletions
diff --git a/iup/srcole/tLegacy.h b/iup/srcole/tLegacy.h
new file mode 100755
index 0000000..3294e20
--- /dev/null
+++ b/iup/srcole/tLegacy.h
@@ -0,0 +1,550 @@
+/*
+ * INOLE.H
+ *
+ * Master header file for all Inside OLE samples.
+ *
+ * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
+ *
+ * Kraig Brockschmidt, Microsoft
+ * Internet : kraigb@microsoft.com
+ * Compuserve: >INTERNET:kraigb@microsoft.com
+ */
+
+
+#ifndef _INOLE_H_
+#define _INOLE_H_
+
+#define INC_OLE2
+#include <windows.h>
+#include <ole2.h>
+#include <ole2ver.h>
+
+#ifdef INC_OLEUI
+#ifdef WIN32
+/*
+ * Comment the next line and remove the comment from the
+ * line after it to compile for Windows NT 3.5.
+ */
+#include <oledlg.h>
+//#include <ole2ui.h>
+#else
+#include <ole2ui.h>
+#endif
+#endif
+
+#ifdef INC_CONTROLS
+#define INC_AUTOMATION
+#endif
+
+#ifdef INC_AUTOMATION
+#ifndef WIN32
+#include <dispatch.h>
+#include <olenls.h>
+#else
+#include <oleauto.h>
+#endif
+#endif
+
+#ifdef INC_CONTROLS
+#include <olectl.h>
+#ifndef INITGUIDS
+#include <olectlid.h>
+#endif
+#endif
+
+#ifdef WIN32
+#include <tchar.h>
+#ifdef UNICODE
+#include <wchar.h>
+#endif
+#endif
+
+#ifndef WIN32
+#include <shellapi.h>
+#include <malloc.h>
+#endif
+
+#ifdef INC_CLASSLIB
+extern "C"
+ {
+ #include <commdlg.h>
+ #ifndef WIN32
+ #include <print.h>
+ #include <dlgs.h>
+ #endif
+ }
+
+#include <classlib.h>
+#endif
+
+
+//Types that OLE2.H et. al. leave out
+
+#ifndef PPVOID
+typedef LPVOID * PPVOID;
+#endif //PPVOID
+
+
+#ifdef _OLE2_H_ //May not include ole2.h at all times.
+
+#ifndef PPOINTL
+typedef POINTL * PPOINTL;
+#endif //PPOINTL
+
+
+#ifndef _WIN32
+#ifndef OLECHAR
+typedef char OLECHAR;
+typedef OLECHAR FAR* LPOLESTR;
+typedef const OLECHAR FAR* LPCOLESTR;
+#endif //OLECHAR
+#endif //_WIN32
+
+
+//Useful macros.
+#define SETFormatEtc(fe, cf, asp, td, med, li) \
+ {\
+ (fe).cfFormat=cf;\
+ (fe).dwAspect=asp;\
+ (fe).ptd=td;\
+ (fe).tymed=med;\
+ (fe).lindex=li;\
+ }
+
+#define SETDefFormatEtc(fe, cf, med) \
+ {\
+ (fe).cfFormat=cf;\
+ (fe).dwAspect=DVASPECT_CONTENT;\
+ (fe).ptd=NULL;\
+ (fe).tymed=med;\
+ (fe).lindex=-1;\
+ }
+
+
+#define SETRECTL(rcl, l, t, r, b) \
+ {\
+ (rcl).left=l;\
+ (rcl).top=t;\
+ (rcl).right=r;\
+ (rcl).bottom=b;\
+ }
+
+#define SETSIZEL(szl, h, v) \
+ {\
+ (szl).cx=h;\
+ (szl).cy=v;\
+ }
+
+
+#define RECTLFROMRECT(rcl, rc)\
+ {\
+ (rcl).left=(long)(rc).left;\
+ (rcl).top=(long)(rc).top;\
+ (rcl).right=(long)(rc).right;\
+ (rcl).bottom=(long)(rc).bottom;\
+ }
+
+
+#define RECTFROMRECTL(rc, rcl)\
+ {\
+ (rc).left=(int)(rcl).left;\
+ (rc).top=(int)(rcl).top;\
+ (rc).right=(int)(rcl).right;\
+ (rc).bottom=(int)(rcl).bottom;\
+ }
+
+
+#define POINTLFROMPOINT(ptl, pt) \
+ { \
+ (ptl).x=(long)(pt).x; \
+ (ptl).y=(long)(pt).y; \
+ }
+
+
+#define POINTFROMPOINTL(pt, ptl) \
+ { \
+ (pt).x=(int)(ptl).x; \
+ (pt).y=(int)(ptl).y; \
+ }
+
+//Here's one that should be in windows.h
+#define SETPOINT(pt, h, v) \
+ {\
+ (pt).x=h;\
+ (pt).y=v;\
+ }
+
+#define SETPOINTL(ptl, h, v) \
+ {\
+ (ptl).x=h;\
+ (ptl).y=v;\
+ }
+
+#endif //_OLE2_H_
+
+#ifdef INC_AUTOMATION
+
+//Macros for setting DISPPARAMS structures
+#define SETDISPPARAMS(dp, numArgs, pvArgs, numNamed, pNamed) \
+ {\
+ (dp).cArgs=numArgs;\
+ (dp).rgvarg=pvArgs;\
+ (dp).cNamedArgs=numNamed;\
+ (dp).rgdispidNamedArgs=pNamed;\
+ }
+
+#define SETNOPARAMS(dp) SETDISPPARAMS(dp, 0, NULL, 0, NULL)
+
+//Macros for setting EXCEPINFO structures
+#define SETEXCEPINFO(ei, excode, src, desc, file, ctx, func, scd) \
+ {\
+ (ei).wCode=excode;\
+ (ei).wReserved=0;\
+ (ei).bstrSource=src;\
+ (ei).bstrDescription=desc;\
+ (ei).bstrHelpFile=file;\
+ (ei).dwHelpContext=ctx;\
+ (ei).pvReserved=NULL;\
+ (ei).pfnDeferredFillIn=func;\
+ (ei).scode=scd;\
+ }
+
+
+#define INITEXCEPINFO(ei) \
+ SETEXCEPINFO(ei,0,NULL,NULL,NULL,0L,NULL,S_OK)
+
+#endif
+
+
+/*
+ * State flags for IPersistStorage implementations. These
+ * are kept here to avoid repeating the code in all samples.
+ */
+
+typedef enum
+ {
+ PSSTATE_UNINIT, //Uninitialized
+ PSSTATE_SCRIBBLE, //Scribble
+ PSSTATE_ZOMBIE, //No scribble
+ PSSTATE_HANDSOFF //Hand-off
+ } PSSTATE;
+
+
+/*
+ * Identifers to describe which persistence model an object
+ * is using, along with a union type that holds on the the
+ * appropriate pointers that a client may need.
+ */
+typedef enum
+ {
+ PERSIST_UNKNOWN=0,
+ PERSIST_STORAGE,
+ PERSIST_STREAM,
+ PERSIST_STREAMINIT,
+ PERSIST_FILE
+ } PERSIST_MODEL;
+
+typedef struct
+ {
+ PERSIST_MODEL psModel;
+ union
+ {
+ IPersistStorage *pIPersistStorage;
+ IPersistStream *pIPersistStream;
+ #ifdef INC_CONTROLS
+ IPersistStreamInit *pIPersistStreamInit;
+ #endif
+ IPersistFile *pIPersistFile;
+ } pIP;
+
+ } PERSISTPOINTER, *PPERSISTPOINTER;
+
+
+//To identify a storage in which to save, load, or create.
+typedef struct
+ {
+ PERSIST_MODEL psModel;
+ union
+ {
+ IStorage *pIStorage;
+ IStream *pIStream;
+ } pIS;
+
+ } STGPOINTER, *PSTGPOINTER;
+
+
+
+//Type for an object-destroyed callback
+typedef void (*PFNDESTROYED)(void);
+
+
+//DeleteInterfaceImp calls 'delete' and NULLs the pointer
+#define DeleteInterfaceImp(p)\
+ {\
+ if (NULL!=p)\
+ {\
+ delete p;\
+ p=NULL;\
+ }\
+ }
+
+
+//ReleaseInterface calls 'Release' and NULLs the pointer
+#define ReleaseInterface(p)\
+ {\
+ IUnknown *pt=(IUnknown *)p;\
+ p=NULL;\
+ if (NULL!=pt)\
+ pt->Release();\
+ }
+
+
+//OLE Documents Clipboard Formats
+
+#define CFSTR_EMBEDSOURCE TEXT("Embed Source")
+#define CFSTR_EMBEDDEDOBJECT TEXT("Embedded Object")
+#define CFSTR_LINKSOURCE TEXT("Link Source")
+#define CFSTR_CUSTOMLINKSOURCE TEXT("Custom Link Source")
+#define CFSTR_OBJECTDESCRIPTOR TEXT("Object Descriptor")
+#define CFSTR_LINKSRCDESCRIPTOR TEXT("Link Source Descriptor")
+
+
+
+//Functions in the helper DLL, INOLE.DLL
+
+//UI Effects
+STDAPI_(void) UIDrawHandles(LPRECT, HDC, DWORD, UINT, BOOL);
+STDAPI_(void) UIDrawShading(LPRECT, HDC, DWORD, UINT);
+STDAPI_(void) UIShowObject(LPCRECT, HDC, BOOL);
+
+//For UIDrawHandles
+#define UI_HANDLES_USEINVERSE 0x00000001L
+#define UI_HANDLES_NOBORDER 0x00000002L
+#define UI_HANDLES_INSIDE 0x00000004L
+#define UI_HANDLES_OUTSIDE 0x00000008L
+
+//For UIDrawShading
+#define UI_SHADE_FULLRECT 1
+#define UI_SHADE_BORDERIN 2
+#define UI_SHADE_BORDEROUT 3
+
+//Coordinate Munging
+STDAPI_(int) XformWidthInHimetricToPixels(HDC, int);
+STDAPI_(int) XformWidthInPixelsToHimetric(HDC, int);
+STDAPI_(int) XformHeightInHimetricToPixels(HDC, int);
+STDAPI_(int) XformHeightInPixelsToHimetric(HDC, int);
+
+STDAPI_(void) XformRectInPixelsToHimetric(HDC, LPRECT, LPRECT);
+STDAPI_(void) XformRectInHimetricToPixels(HDC, LPRECT, LPRECT);
+STDAPI_(void) XformSizeInPixelsToHimetric(HDC, LPSIZEL, LPSIZEL);
+STDAPI_(void) XformSizeInHimetricToPixels(HDC, LPSIZEL, LPSIZEL);
+
+
+//Helpers
+STDAPI_(void) INOLE_MetafilePictIconFree(HGLOBAL);
+STDAPI INOLE_SetIconInCache(IUnknown *, HGLOBAL);
+STDAPI_(UINT) INOLE_GetUserTypeOfClass(REFCLSID, UINT, LPTSTR
+ , UINT);
+STDAPI INOLE_DoConvert(IStorage *, REFCLSID);
+STDAPI_(LPTSTR) INOLE_CopyString(LPTSTR);
+STDAPI_(HGLOBAL) INOLE_ObjectDescriptorFromOleObject(IOleObject *
+ , DWORD, POINTL, LPSIZEL);
+STDAPI_(HGLOBAL) INOLE_AllocObjectDescriptor(CLSID, DWORD
+ , SIZEL, POINTL, DWORD, LPTSTR, LPTSTR);
+STDAPI_(IStorage *) INOLE_CreateStorageOnHGlobal(DWORD);
+STDAPI INOLE_GetLinkSourceData(IMoniker *, LPCLSID
+ , LPFORMATETC, LPSTGMEDIUM);
+STDAPI_(void) INOLE_RegisterAsRunning(IUnknown *, IMoniker *
+ , DWORD, LPDWORD);
+STDAPI_(void) INOLE_RevokeAsRunning(LPDWORD);
+STDAPI_(void) INOLE_NoteChangeTime(DWORD, FILETIME *, LPTSTR);
+
+
+
+/*
+ * These are for ANSI compilations on Win32. Source code assumes
+ * a Win32 Unicode environment (or Win16 Ansi). These macros
+ * route Win32 ANSI compiled functions to wrappers which do the
+ * proper Unicode conversion.
+ */
+
+
+#ifdef WIN32ANSI
+STDAPI INOLE_ConvertStringToANSI(LPCWSTR, LPSTR *);
+STDAPI INOLE_StringFromCLSID(REFCLSID, LPSTR *);
+STDAPI INOLE_StringFromGUID2(REFGUID, LPSTR, int);
+STDAPI INOLE_ProgIDFromCLSID(REFCLSID, LPSTR *);
+
+STDAPI INOLE_ReadFmtUserTypeStg(IStorage *, CLIPFORMAT *, LPSTR *);
+STDAPI INOLE_WriteFmtUserTypeStg(IStorage *, CLIPFORMAT, LPSTR);
+
+STDAPI INOLE_StgIsStorageFile(LPCSTR);
+STDAPI INOLE_StgCreateDocfile(LPCSTR, DWORD, DWORD, IStorage **);
+STDAPI INOLE_StgOpenStorage(LPCSTR, IStorage *, DWORD, SNB
+ , DWORD, IStorage **);
+
+
+STDAPI INOLE_CreateFileMoniker(LPCSTR, LPMONIKER *);
+STDAPI INOLE_CreateItemMoniker(LPCSTR, LPCSTR, LPMONIKER *);
+STDAPI INOLE_MkParseDisplayName(LPBC, LPCSTR, ULONG *, LPMONIKER *);
+
+STDAPI INOLE_OleCreateLinkToFile(LPCSTR, REFIID, DWORD, LPFORMATETC
+ , LPOLECLIENTSITE, LPSTORAGE, LPVOID *);
+STDAPI INOLE_OleCreateFromFile(REFCLSID, LPCSTR, REFIID
+ , DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, LPVOID *);
+
+
+#ifndef NOMACROREDIRECT
+#undef StringFromCLSID
+#define StringFromCLSID(c, pp) INOLE_StringFromCLSID(c, pp)
+
+#undef StringFromGUID2
+#define StringFromGUID2(r, p, i) INOLE_StringFromGUID2(r, p, i)
+
+#undef ProgIDFromCLSID
+#define ProgIDFromCLSID(c, pp) INOLE_ProgIDFromCLSID(c, pp)
+
+#undef ReadFmtUserTypeStg
+#define ReadFmtUserTypeStg(p, c, s) INOLE_ReadFmtUserTypeStg(p, c, s)
+
+#undef WriteFmtUserTypeStg
+#define WriteFmtUserTypeStg(p, c, s) INOLE_WriteFmtUserTypeStg(p, c, s)
+
+#undef StgIsStorageFile
+#define StgIsStorageFile(s) INOLE_StgIsStorageFile(s)
+
+#undef StgCreateDocfile
+#define StgCreateDocfile(a, b, c, d) INOLE_StgCreateDocfile(a, b, c, d)
+
+#undef StgOpenStorage
+#define StgOpenStorage(a,b,c,d,e,f) INOLE_StgOpenStorage(a,b,c,d,e,f)
+
+#undef CreateFileMoniker
+#define CreateFileMoniker(p, i) INOLE_CreateFileMoniker(p, i)
+
+#undef CreateItemMoniker
+#define CreateItemMoniker(p1, p2, i) INOLE_CreateItemMoniker(p1, p2, i)
+
+#undef MkParseDisplayName
+#define MkParseDisplayName(b, p, u, i) INOLE_MkParseDisplayName(b, p, u, i)
+
+#undef OleCreateLinkToFile
+#define OleCreateLinkToFile(s, i, d, fe, cs, st, pv) INOLE_OleCreateLinkToFile(s, i, d, fe, cs, st, pv)
+
+#undef OleCreateFromFile
+#define OleCreateFromFile(c, s, i, d, fe, cs, st, pv) INOLE_OleCreateFromFile(c, s, i, d, fe, cs, st, pv)
+
+
+#endif
+
+#endif
+
+//Versioning.
+#define VERSIONMAJOR 2
+#define VERSIONMINOR 0
+#define VERSIONCURRENT 0x00020000
+
+#define HIMETRIC_PER_INCH 2540
+#define LOMETRIC_PER_INCH 254
+#define LOMETRIC_BORDER 60 //Border around page
+
+#define CREATE_FAILED 0
+#define CREATE_GRAPHICONLY 1
+
+//State flags
+//CHAPTER24MOD
+//Switched #defines to an enum
+enum
+ {
+ TENANTSTATE_DEFAULT =0x00000000,
+ TENANTSTATE_SELECTED=0x00000001,
+ TENANTSTATE_OPEN =0x00000002,
+ TENANTSTATE_SHOWTYPE=0x00000004,
+
+ //New ones for controls.
+ TENANTSTATE_CONTROL =0x00000100,
+ TENANTSTATE_EVENTS =0x00000200,
+ TENANTSTATE_BUTTON =0x00000400,
+ TENANTSTATE_LABEL =0x00000800,
+ TENANTSTATE_DEFBUTTON =0x00001000,
+ TENANTSTATE_CANCELBUTTON=0x00002000
+ };
+
+//To mask off non-control flags
+#define STATEMASK_CONTROLS 0xFFFFFF00
+
+
+
+/*
+ * Structures to save with the document describing the device
+ * configuration and pages that we have. This is followed by
+ * a list of DWORD IDs for the individual pages.
+ */
+
+typedef struct tagDEVICECONFIG
+ {
+ DWORD cb; //Size of structure
+ TCHAR szDriver[CCHDEVICENAME];
+ TCHAR szDevice[CCHDEVICENAME];
+ TCHAR szPort[CCHDEVICENAME];
+ DWORD cbDevMode; //Size of actual DEVMODE
+ DEVMODE dm; //Variable
+ } DEVICECONFIG, *PDEVICECONFIG;
+
+//Offset to cbDevMode
+#define CBSEEKOFFSETCBDEVMODE (sizeof(DWORD) \
+ +(3*CCHDEVICENAME*sizeof(TCHAR)))
+
+//Combined OLE and Patron device structures.
+typedef struct tagCOMBINEDEVICE
+ {
+ DVTARGETDEVICE td;
+ DEVICECONFIG dc;
+ } COMBINEBDEVICE, *PCOMBINEDEVICE;
+
+
+
+void RectConvertMappings(LPRECT, HDC, BOOL);
+
+
+//CHAPTER24MOD
+
+
+#ifdef WIN32
+#define PROP_POINTER TEXT("Pointer")
+#else
+#define PROP_SELECTOR "Selector"
+#define PROP_OFFSET "Offset"
+#endif
+
+//End CHAPTER24MOD
+
+BOOL ObjectEventsIID(LPUNKNOWN pObj, IID *piid);
+BOOL InterfaceConnect(LPUNKNOWN pObj, REFIID riid
+ , LPUNKNOWN pIUnknownSink, LPDWORD pdwConn);
+BOOL InterfaceDisconnect(LPUNKNOWN pObj, REFIID riid
+ , LPDWORD pdwConn);
+BOOL ObjectTypeInfo(LPUNKNOWN pObj, LPTYPEINFO *ppITypeInfo);
+BOOL ObjectTypeInfoEvents(LPUNKNOWN pObj, LPTYPEINFO *ppITypeInfo);
+BOOL ObjectEventsIID(LPUNKNOWN pObj, IID *piid);
+
+#define HIMETRIC_PER_INCH 2540 //Number HIMETRIC units per inch
+#define PTS_PER_INCH 72 //Number points (font size) per inch
+
+#define MAP_PIX_TO_LOGHIM(x,ppli) MulDiv(HIMETRIC_PER_INCH, (x), (ppli))
+#define MAP_LOGHIM_TO_PIX(x,ppli) MulDiv((ppli), (x), HIMETRIC_PER_INCH)
+
+//Useful macros.
+#define SETFormatEtc(fe, cf, asp, td, med, li) \
+ {\
+ (fe).cfFormat=cf;\
+ (fe).dwAspect=asp;\
+ (fe).ptd=td;\
+ (fe).tymed=med;\
+ (fe).lindex=li;\
+ }
+
+STDAPI_(void) XformRectInHimetricToPixels(HDC hDC, LPRECT prcHiMetric
+ , LPRECT prcPix);
+
+#endif //_INOLE_H_