home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 1998 May
/
Pcwk5b98.iso
/
Borland
/
Cplus45
/
BC45
/
BOCOLE.PAK
/
BOLEDOC.H
< prev
next >
Wrap
C/C++ Source or Header
|
1995-08-29
|
6KB
|
184 lines
//
//**************************************************************************
//
// BOleDoc.h -- Declares the document-level helper object for containers
//
// Copyright (c) 1993,94 by Borland International, Inc. All rights reserved
//
//**************************************************************************
#ifndef _BOLEDOC_H
#define _BOLEDOC_H 1
#include "BOleComp.h"
#include "BOlePart.h"
class _ICLASS BOleService;
class _ICLASS BOleDocument : public BOleComponent, public IBDocument,
public IDropTarget, public IOleUILinkContainer, public IOleInPlaceFrame,
public IBOverrideBrowseLinks
{
public:
static CLIPFORMAT oleEmbdObjClipFmt;
static CLIPFORMAT oleEmbSrcClipFmt;
static CLIPFORMAT oleLinkSrcClipFmt;
static CLIPFORMAT oleLinkClipFmt;
static CLIPFORMAT oleNativeClipFmt;
static CLIPFORMAT oleOwnerLinkClipFmt;
static CLIPFORMAT oleObjectDescFmt;
static CLIPFORMAT oleLinkSrcDescFmt;
static UINT dragScrollInset;
static UINT dragScrollDelay;
static UINT dragScrollInterval;
protected:
friend BOlePart;
friend BOleService;
IBContainer * pContainer;
IBApplication * pApplication;
BOleService * pService;
IOleInPlaceActiveObject
* pActivePart; // For keeping object's active state in sync with window's
BOlePart * pFirstPart; // For enumerating objects
// For drawing XOR'ed outline rect during drag/drop
//
RECT dndObjPos;
SIZE dndSize;
POINT dndLastPos;
BOOL dndInfoAvailable;
POINT dndOffset;
PIBDropDest pDropDest;
BOOL fDrawn;
BOOL dndLastFeedbackFailed; // so we know what to do when mouse doesn't move
// For scrolling during drag/drop
//
RECT rcScrollTop, rcScrollLeft, rcScrollRight, rcScrollBottom;
DWORD scrollEnterTime;
DWORD scrollLastTime;
BOOL fScrollDelay;
// For format negotiation during drag/drop
//
OLEUIPASTEENTRY *dndFormatList;
UINT dndFormatCount;
UINT dndFormat;
BOOL fCantLink;
// For registering drag/drop
BOOL fRegistered;
// To prevent BrowseLinks from being re-entrant
BOOL fInBrowseLinks;
// Private implementation functions
//
short _IFUNC ValidateDrag(DWORD keyState, POINTL *where, DWORD *effect, IDataObject *dataObj = NULL);
BOleScroll _IFUNC DragScrollReqd (POINTL *where);
void _IFUNC CacheDragRects (LPRECT);
void _IFUNC CalculateDndObjPos ();
public:
BOleDocument (BOleClassManager *, IBUnknownMain *, BOleService *);
~BOleDocument ();
IBContainer *GetContainer () { return pContainer; }
BOlePart *GetFirstPart () { return pFirstPart; }
void SetFirstPart (BOlePart*pPart) { pFirstPart = pPart; }
void OnRemovePart (BOlePart *pPart);
BOOL _IFUNC EnableBrowseLinks();
HRESULT OnModalDialog (BOOL);
HRESULT TranslateAccel (LPMSG);
// IDocument functions
//
virtual HRESULT _IFUNC Init(PIBContainer);
virtual void _IFUNC OnResize ();
virtual void _IFUNC OnActivate (BOOL fActivate);
virtual void _IFUNC OnClose ();
virtual HRESULT _IFUNC OnSetFocus(BOOL);
virtual HRESULT _IFUNC EnumLinks (PIBLinkInfo FAR*);
virtual HRESULT _IFUNC BrowseLinks ();
virtual HRESULT _IFUNC UpdateLinks ();
public:
// IUnknown Methods
// delegate aggregator's IUnknownMain
DEFINE_IUNKNOWN(pObjOuter)
// IUnknownMain methods
//
virtual HRESULT _IFUNC QueryInterfaceMain(REFIID iid, LPVOID FAR* pif);
private:
// IOleWindow methods, base of IOleInPlaceUIWindow and IOleInPlaceSite
//
HRESULT _IFUNC GetWindow(HWND FAR* lphwnd);
HRESULT _IFUNC ContextSensitiveHelp(BOOL fEnterMode);
// IOleInPlaceUIWindow methods
//
HRESULT _IFUNC GetBorder(LPRECT lprectBorder);
HRESULT _IFUNC RequestBorderSpace(LPCRECT lprectWidths);
HRESULT _IFUNC SetBorderSpace(LPCBORDERWIDTHS lpborderwidths);
HRESULT _IFUNC SetActiveObject(IOleInPlaceActiveObject* lpActiveObject,
LPCOLESTR lpszObjName);
// IDropTarget functions
//
HRESULT _IFUNC DragEnter(IDataObject *dataObj, DWORD keyState, POINTL where, LPDWORD effect);
HRESULT _IFUNC DragOver(DWORD keyState, POINTL where, LPDWORD effect);
HRESULT _IFUNC DragLeave();
HRESULT _IFUNC Drop(IDataObject *dataObj, DWORD keyState, POINTL where, LPDWORD effect);
// IOleUILinkContainer functions
//
DWORD _IFUNC GetNextLink (DWORD dwLink);
HRESULT _IFUNC SetLinkUpdateOptions (DWORD dwLink, DWORD dwUpdateOpt);
HRESULT _IFUNC GetLinkUpdateOptions (DWORD dwLink, DWORD FAR* lpdwUpdateOpt);
HRESULT _IFUNC SetLinkSource(
DWORD dwLink,
LPOLESTR lpszDisplayName,
ULONG lenFileName,
ULONG FAR* pchEaten,
BOOL fValidateSource);
HRESULT _IFUNC GetLinkSource(
DWORD dwLink,
LPOLESTR FAR* lplpszDisplayName,
ULONG FAR* lplenFileName,
LPOLESTR FAR* lplpszFullLinkType,
LPOLESTR FAR* lplpszShortLinkType,
BOOL FAR* lpfSourceAvailable,
BOOL FAR* lpfIsSelected);
HRESULT _IFUNC OpenLinkSource (DWORD dwLink);
HRESULT _IFUNC UpdateLink(DWORD dwLink, BOOL fErrorMessage,BOOL fErrorAction);
HRESULT _IFUNC CancelLink (DWORD dwLink);
// IOleInPlaceFrame methods
//
HRESULT _IFUNC InsertMenus(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidts);
HRESULT _IFUNC SetMenu(HMENU hmenuShared, HOLEMENU holemenu, HWND hwndActiveObject);
HRESULT _IFUNC RemoveMenus(HMENU hmenuShared);
HRESULT _IFUNC SetStatusText(LPCOLESTR lpszStatusText);
HRESULT _IFUNC EnableModeless(BOOL fEnable);
HRESULT _IFUNC TranslateAccelerator(LPMSG lpmsg, WORD wID);
};
#endif _BOLEDOC_H