168 lines
6.6 KiB
C
168 lines
6.6 KiB
C
|
#ifndef _RICHOLE_
|
||
|
#define _RICHOLE_
|
||
|
|
||
|
/*
|
||
|
* RICHOLE.H
|
||
|
*
|
||
|
* Purpose:
|
||
|
* OLE Extensions to the Rich Text Editor
|
||
|
*
|
||
|
* Copyright (c) 1985-1996, Microsoft Corporation
|
||
|
*/
|
||
|
|
||
|
// Structure passed to GetObject and InsertObject
|
||
|
typedef struct _reobject
|
||
|
{
|
||
|
DWORD cbStruct; // Size of structure
|
||
|
LONG cp; // Character position of object
|
||
|
CLSID clsid; // Class ID of object
|
||
|
LPOLEOBJECT poleobj; // OLE object interface
|
||
|
LPSTORAGE pstg; // Associated storage interface
|
||
|
LPOLECLIENTSITE polesite; // Associated client site interface
|
||
|
SIZEL sizel; // Size of object (may be 0,0)
|
||
|
DWORD dvaspect; // Display aspect to use
|
||
|
DWORD dwFlags; // Object status flags
|
||
|
DWORD dwUser; // Dword for user's use
|
||
|
} REOBJECT;
|
||
|
|
||
|
// Flags to specify which interfaces should be returned in the structure above
|
||
|
#define REO_GETOBJ_NO_INTERFACES (0x00000000L)
|
||
|
#define REO_GETOBJ_POLEOBJ (0x00000001L)
|
||
|
#define REO_GETOBJ_PSTG (0x00000002L)
|
||
|
#define REO_GETOBJ_POLESITE (0x00000004L)
|
||
|
#define REO_GETOBJ_ALL_INTERFACES (0x00000007L)
|
||
|
|
||
|
// Place object at selection
|
||
|
#define REO_CP_SELECTION ((ULONG) -1L)
|
||
|
|
||
|
// Use character position to specify object instead of index
|
||
|
#define REO_IOB_SELECTION ((ULONG) -1L)
|
||
|
#define REO_IOB_USE_CP ((ULONG) -2L)
|
||
|
|
||
|
// Object flags
|
||
|
#define REO_NULL (0x00000000L) // No flags
|
||
|
#define REO_READWRITEMASK (0x000007FFL) // Mask out RO bits
|
||
|
#define REO_CANROTATE (0x00000080L) // Object knows how to display itself rotated
|
||
|
#define REO_OWNERDRAWSELECT (0x00000040L) // Owner draws selected object
|
||
|
#define REO_DONTNEEDPALETTE (0x00000020L) // Object doesn't need palette
|
||
|
#define REO_BLANK (0x00000010L) // Object is blank
|
||
|
#define REO_DYNAMICSIZE (0x00000008L) // Object defines size always
|
||
|
#define REO_INVERTEDSELECT (0x00000004L) // Object drawn all inverted if sel
|
||
|
#define REO_BELOWBASELINE (0x00000002L) // Object sits below the baseline
|
||
|
#define REO_RESIZABLE (0x00000001L) // Object may be resized
|
||
|
#define REO_USEASBACKGROUND (0x00000400L) // Use object as background picture
|
||
|
#define REO_WRAPTEXTAROUND (0x00000200L) // Wrap text around the object
|
||
|
#define REO_ALIGNTORIGHT (0x00000100L) // Align object to view's right side
|
||
|
// Only makes sense when REO_WRAPTEXTAROUND is set
|
||
|
|
||
|
#define REO_LINK (0x80000000L) // Object is a link (RO)
|
||
|
#define REO_STATIC (0x40000000L) // Object is static (RO)
|
||
|
#define REO_SELECTED (0x08000000L) // Object selected (RO)
|
||
|
#define REO_OPEN (0x04000000L) // Object open in its server (RO)
|
||
|
#define REO_INPLACEACTIVE (0x02000000L) // Object in place active (RO)
|
||
|
#define REO_HILITED (0x01000000L) // Object is to be hilited (RO)
|
||
|
#define REO_LINKAVAILABLE (0x00800000L) // Link believed available (RO)
|
||
|
#define REO_GETMETAFILE (0x00400000L) // Object requires metafile (RO)
|
||
|
|
||
|
// Flags for IRichEditOle::GetClipboardData(),
|
||
|
// IRichEditOleCallback::GetClipboardData() and
|
||
|
// IRichEditOleCallback::QueryAcceptData()
|
||
|
#define RECO_PASTE (0x00000000L) // paste from clipboard
|
||
|
#define RECO_DROP (0x00000001L) // drop
|
||
|
#define RECO_COPY (0x00000002L) // copy to the clipboard
|
||
|
#define RECO_CUT (0x00000003L) // cut to the clipboard
|
||
|
#define RECO_DRAG (0x00000004L) // drag
|
||
|
|
||
|
/*
|
||
|
* IRichEditOle
|
||
|
*
|
||
|
* Purpose:
|
||
|
* Interface used by the client of RichEdit to perform OLE-related
|
||
|
* operations.
|
||
|
*
|
||
|
* //$ REVIEW:
|
||
|
* The methods herein may just want to be regular Windows messages.
|
||
|
*/
|
||
|
#undef INTERFACE
|
||
|
#define INTERFACE IRichEditOle
|
||
|
|
||
|
DECLARE_INTERFACE_(IRichEditOle, IUnknown)
|
||
|
{
|
||
|
// *** IUnknown methods ***
|
||
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lplpObj) PURE;
|
||
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
||
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
||
|
|
||
|
// *** IRichEditOle methods ***
|
||
|
STDMETHOD(GetClientSite) (THIS_ LPOLECLIENTSITE FAR * lplpolesite) PURE;
|
||
|
STDMETHOD_(LONG,GetObjectCount) (THIS) PURE;
|
||
|
STDMETHOD_(LONG,GetLinkCount) (THIS) PURE;
|
||
|
STDMETHOD(GetObject) (THIS_ LONG iob, REOBJECT FAR * lpreobject,
|
||
|
DWORD dwFlags) PURE;
|
||
|
STDMETHOD(InsertObject) (THIS_ REOBJECT FAR * lpreobject) PURE;
|
||
|
STDMETHOD(ConvertObject) (THIS_ LONG iob, REFCLSID rclsidNew,
|
||
|
LPCSTR lpstrUserTypeNew) PURE;
|
||
|
STDMETHOD(ActivateAs) (THIS_ REFCLSID rclsid, REFCLSID rclsidAs) PURE;
|
||
|
STDMETHOD(SetHostNames) (THIS_ LPCSTR lpstrContainerApp,
|
||
|
LPCSTR lpstrContainerObj) PURE;
|
||
|
STDMETHOD(SetLinkAvailable) (THIS_ LONG iob, BOOL fAvailable) PURE;
|
||
|
STDMETHOD(SetDvaspect) (THIS_ LONG iob, DWORD dvaspect) PURE;
|
||
|
STDMETHOD(HandsOffStorage) (THIS_ LONG iob) PURE;
|
||
|
STDMETHOD(SaveCompleted) (THIS_ LONG iob, LPSTORAGE lpstg) PURE;
|
||
|
STDMETHOD(InPlaceDeactivate) (THIS) PURE;
|
||
|
STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
|
||
|
STDMETHOD(GetClipboardData) (THIS_ CHARRANGE FAR * lpchrg, DWORD reco,
|
||
|
LPDATAOBJECT FAR * lplpdataobj) PURE;
|
||
|
STDMETHOD(ImportDataObject) (THIS_ LPDATAOBJECT lpdataobj,
|
||
|
CLIPFORMAT cf, HGLOBAL hMetaPict) PURE;
|
||
|
};
|
||
|
typedef IRichEditOle FAR * LPRICHEDITOLE;
|
||
|
|
||
|
/*
|
||
|
* IRichEditOleCallback
|
||
|
*
|
||
|
* Purpose:
|
||
|
* Interface used by the RichEdit to get OLE-related stuff from the
|
||
|
* application using RichEdit.
|
||
|
*/
|
||
|
#undef INTERFACE
|
||
|
#define INTERFACE IRichEditOleCallback
|
||
|
|
||
|
DECLARE_INTERFACE_(IRichEditOleCallback, IUnknown)
|
||
|
{
|
||
|
// *** IUnknown methods ***
|
||
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lplpObj) PURE;
|
||
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
||
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
||
|
|
||
|
// *** IRichEditOleCallback methods ***
|
||
|
STDMETHOD(GetNewStorage) (THIS_ LPSTORAGE FAR * lplpstg) PURE;
|
||
|
STDMETHOD(GetInPlaceContext) (THIS_ LPOLEINPLACEFRAME FAR * lplpFrame,
|
||
|
LPOLEINPLACEUIWINDOW FAR * lplpDoc,
|
||
|
LPOLEINPLACEFRAMEINFO lpFrameInfo) PURE;
|
||
|
STDMETHOD(ShowContainerUI) (THIS_ BOOL fShow) PURE;
|
||
|
STDMETHOD(QueryInsertObject) (THIS_ LPCLSID lpclsid, LPSTORAGE lpstg,
|
||
|
LONG cp) PURE;
|
||
|
STDMETHOD(DeleteObject) (THIS_ LPOLEOBJECT lpoleobj) PURE;
|
||
|
STDMETHOD(QueryAcceptData) (THIS_ LPDATAOBJECT lpdataobj,
|
||
|
CLIPFORMAT FAR * lpcfFormat, DWORD reco,
|
||
|
BOOL fReally, HGLOBAL hMetaPict) PURE;
|
||
|
STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
|
||
|
STDMETHOD(GetClipboardData) (THIS_ CHARRANGE FAR * lpchrg, DWORD reco,
|
||
|
LPDATAOBJECT FAR * lplpdataobj) PURE;
|
||
|
STDMETHOD(GetDragDropEffect) (THIS_ BOOL fDrag, DWORD grfKeyState,
|
||
|
LPDWORD pdwEffect) PURE;
|
||
|
STDMETHOD(GetContextMenu) (THIS_ WORD seltype, LPOLEOBJECT lpoleobj,
|
||
|
CHARRANGE FAR * lpchrg,
|
||
|
HMENU FAR * lphmenu) PURE;
|
||
|
};
|
||
|
typedef IRichEditOleCallback FAR * LPRICHEDITOLECALLBACK;
|
||
|
|
||
|
#ifndef MAC
|
||
|
// RichEdit interface GUIDs
|
||
|
DEFINE_GUID(IID_IRichEditOle, 0x00020D00, 0, 0, 0xC0,0,0,0,0,0,0,0x46);
|
||
|
DEFINE_GUID(IID_IRichEditOleCallback, 0x00020D03, 0, 0, 0xC0,0,0,0,0,0,0,0x46);
|
||
|
#endif // !MAC
|
||
|
|
||
|
#endif // _RICHOLE_
|