350 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			350 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /***************************************************************************
 | |
|  * DSOFDOCOBJ.H
 | |
|  *
 | |
|  * DSOFramer: OLE DocObject Site component (used by the control)
 | |
|  *
 | |
|  *  Copyright ©1999-2004; Microsoft Corporation. All rights reserved.
 | |
|  *  Written by Microsoft Developer Support Office Integration (PSS DSOI)
 | |
|  * 
 | |
|  *  This code is provided via KB 311765 as a sample. It is not a formal
 | |
|  *  product and has not been tested with all containers or servers. Use it
 | |
|  *  for educational purposes only. See the EULA.TXT file included in the
 | |
|  *  KB download for full terms of use and restrictions.
 | |
|  *
 | |
|  *  THIS CODE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, 
 | |
|  *  EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
 | |
|  *  WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
 | |
|  *
 | |
|  ***************************************************************************/
 | |
| #ifndef DS_DSOFDOCOBJ_H 
 | |
| #define DS_DSOFDOCOBJ_H
 | |
| 
 | |
| ////////////////////////////////////////////////////////////////////
 | |
| // Declarations for Interfaces used in DocObject Containment
 | |
| //
 | |
| #include <docobj.h>    // Standard DocObjects (common to all AxDocs)
 | |
| #include "ipprevw.h"   // PrintPreview (for select Office apps)
 | |
| #include "rbbinder.h"  // Internet Publishing (for Web Folder write access) 
 | |
| 
 | |
| ////////////////////////////////////////////////////////////////////////
 | |
| // Microsoft Office 97-2003 Document Object GUIDs
 | |
| //
 | |
| DEFINE_GUID(CLSID_WORD_DOCUMENT_DOC,    0x00020906, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
 | |
| DEFINE_GUID(CLSID_EXCEL_WORKBOOK_XLS,   0x00020820, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
 | |
| DEFINE_GUID(CLSID_EXCEL_CHART_XLS,      0x00020821, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
 | |
| DEFINE_GUID(CLSID_PPT_PRESENTATION_PPT, 0x64818D10, 0x4F9B, 0x11CF, 0x86, 0xEA, 0x00, 0xAA, 0x00, 0xB9, 0x29, 0xE8);
 | |
| DEFINE_GUID(CLSID_VISIO_DRAWING_VSD,    0x00021A13, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
 | |
| DEFINE_GUID(CLSID_PROJECT_DOCUMENT_MPP, 0x74B78F3A, 0xC8C8, 0x11D1, 0xBE, 0x11, 0x00, 0xC0, 0x4F, 0xB6, 0xFA, 0xF1);
 | |
| DEFINE_GUID(CLSID_MSHTML_DOCUMENT,      0x25336920, 0x03F9, 0x11CF, 0x8F, 0xD0, 0x00, 0xAA, 0x00, 0x68, 0x6F, 0x13);
 | |
| 
 | |
| ////////////////////////////////////////////////////////////////////////
 | |
| // Microsoft Office 2007 Document GUIDs
 | |
| //
 | |
| DEFINE_GUID(CLSID_WORD_DOCUMENT_DOCX,  0xF4754C9B, 0x64F5, 0x4B40, 0x8A, 0xF4, 0x67, 0x97, 0x32, 0xAC, 0x06, 0x07);
 | |
| DEFINE_GUID(CLSID_WORD_DOCUMENT_DOCM,  0x18A06B6B, 0x2F3F, 0x4E2B, 0xA6, 0x11, 0x52, 0xBE, 0x63, 0x1B, 0x2D, 0x22);
 | |
| DEFINE_GUID(CLSID_EXCEL_WORKBOOK_XLSX, 0x00020830, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
 | |
| DEFINE_GUID(CLSID_EXCEL_WORKBOOK_XLSM, 0x00020832, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
 | |
| DEFINE_GUID(CLSID_EXCEL_WORKBOOK_XLSB, 0x00020833, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
 | |
| DEFINE_GUID(CLSID_PPT_PRESENTATION_PPTX, 0xCF4F55F4, 0x8F87, 0x4D47, 0x80, 0xBB, 0x58, 0x08, 0x16, 0x4B, 0xB3, 0xF8);
 | |
| DEFINE_GUID(CLSID_PPT_PRESENTATION_PPTM, 0xDC020317, 0xE6E2, 0x4A62, 0xB9, 0xFA, 0xB3, 0xEF, 0xE1, 0x66, 0x26, 0xF4);
 | |
| 
 | |
| ////////////////////////////////////////////////////////////////////
 | |
| // IDsoDocObjectSite -- {444CA1F7-B405-4002-95C3-A455BC9F4F55}
 | |
| //
 | |
| // Implemented by control host for callbacks. Required interface.
 | |
| //
 | |
| interface IDsoDocObjectSite : public IServiceProvider
 | |
| {
 | |
|     STDMETHOD(GetWindow)(HWND* phWnd) PURE;
 | |
|     STDMETHOD(GetBorder)(LPRECT prcBorder) PURE;
 | |
|     STDMETHOD(SetStatusText)(LPCOLESTR pszText) PURE;
 | |
|     STDMETHOD(GetHostName)(LPWSTR *ppwszHostName) PURE;
 | |
|     STDMETHOD(SysMenuCommand)(UINT uiCharCode) PURE;
 | |
| };
 | |
| DEFINE_GUID(IID_IDsoDocObjectSite, 0x444CA1F7, 0xB405, 0x4002, 0x95, 0xC3, 0xA4, 0x55, 0xBC, 0x9F, 0x4F, 0x55);
 | |
| 
 | |
| 
 | |
| ////////////////////////////////////////////////////////////////////
 | |
| // CDsoDocObject -- ActiveDocument Container Site Object
 | |
| //
 | |
| //  The CDsoDocObject object handles all the DocObject embedding for the 
 | |
| //  control and os fairly self-contained. Like the control it has its 
 | |
| //  own window, but it merely acts as a parent for the embedded object
 | |
| //  window(s) which it activates. 
 | |
| //
 | |
| //  CDsoDocObject works by taking a file (or automation object) and
 | |
| //  copying out the OLE storage used for its persistent data. It then
 | |
| //  creates a new embedding based on the data. If a storage is not
 | |
| //  avaiable, it will attempt to oad the file directly, but the results 
 | |
| //  are less predictable using this manner since DocObjects are embeddings
 | |
| //  and not links and this component has limited support for links. As a
 | |
| //  result, we will attempt to keep our own storage copy in most cases.
 | |
| //
 | |
| //  You should note that this approach is different than one taken by the
 | |
| //  web browser control, which is basically a link container which will
 | |
| //  try to embed (ip activate) if allowed, but if not it opens the file 
 | |
| //  externally and keeps the link. If CDsoDocObject cannot embed the object,
 | |
| //  it returns an error. It will not open the object external.
 | |
| //  
 | |
| //  Like the control, this object also uses nested classes for the OLE 
 | |
| //  interfaces used in the embedding. They are easier to track and easier
 | |
| //  to debug if a specific interface is over/under released. Again this was
 | |
| //  a design decision to make the sample easier to break apart, but not required.
 | |
| //
 | |
| //  Because the object is not tied to the top-level window, it constructs
 | |
| //  the OLE merged menu as a set of popup menus which the control then displays
 | |
| //  in whatever form it wants. You would need to customize this if you used
 | |
| //  the control in a host and wanted the menus to merge with the actual host
 | |
| //  menu bar (on the top-level window or form).
 | |
| // 
 | |
| class CDsoDocObject : public IUnknown
 | |
| {
 | |
| public:
 | |
|     CDsoDocObject();
 | |
|     ~CDsoDocObject();
 | |
| 
 | |
|  // Static Create Method (Host Provides Site Interface)
 | |
| 	static STDMETHODIMP_(CDsoDocObject*) CreateInstance(IDsoDocObjectSite* phost);
 | |
| 
 | |
|  // IUnknown Implementation
 | |
|     STDMETHODIMP QueryInterface(REFIID riid, void** ppv);
 | |
|     STDMETHODIMP_(ULONG) AddRef(void);
 | |
|     STDMETHODIMP_(ULONG) Release(void);
 | |
| 
 | |
|  // IOleClientSite Implementation
 | |
|     BEGIN_INTERFACE_PART(OleClientSite, IOleClientSite)
 | |
|         STDMETHODIMP SaveObject(void);
 | |
|         STDMETHODIMP GetMoniker(DWORD dwAssign, DWORD dwWhichMoniker, IMoniker** ppmk);
 | |
|         STDMETHODIMP GetContainer(IOleContainer** ppContainer);
 | |
|         STDMETHODIMP ShowObject(void);
 | |
|         STDMETHODIMP OnShowWindow(BOOL fShow);
 | |
|         STDMETHODIMP RequestNewObjectLayout(void);
 | |
|     END_INTERFACE_PART(OleClientSite)
 | |
| 
 | |
|  // IOleInPlaceSite Implementation
 | |
|     BEGIN_INTERFACE_PART(OleInPlaceSite, IOleInPlaceSite)
 | |
|         STDMETHODIMP GetWindow(HWND* phwnd);
 | |
|         STDMETHODIMP ContextSensitiveHelp(BOOL fEnterMode);
 | |
|         STDMETHODIMP CanInPlaceActivate(void);
 | |
|         STDMETHODIMP OnInPlaceActivate(void);
 | |
|         STDMETHODIMP OnUIActivate(void);
 | |
|         STDMETHODIMP GetWindowContext(IOleInPlaceFrame** ppFrame, IOleInPlaceUIWindow** ppDoc, LPRECT lprcPosRect, LPRECT lprcClipRect, LPOLEINPLACEFRAMEINFO lpFrameInfo);
 | |
|         STDMETHODIMP Scroll(SIZE sz);
 | |
|         STDMETHODIMP OnUIDeactivate(BOOL fUndoable);
 | |
|         STDMETHODIMP OnInPlaceDeactivate(void);
 | |
|         STDMETHODIMP DiscardUndoState(void);
 | |
|         STDMETHODIMP DeactivateAndUndo(void);
 | |
|         STDMETHODIMP OnPosRectChange(LPCRECT lprcPosRect);
 | |
|     END_INTERFACE_PART(OleInPlaceSite)
 | |
| 
 | |
|  // IOleDocumentSite Implementation
 | |
|     BEGIN_INTERFACE_PART(OleDocumentSite, IOleDocumentSite)
 | |
|         STDMETHODIMP ActivateMe(IOleDocumentView* pView);
 | |
|     END_INTERFACE_PART(OleDocumentSite)
 | |
| 
 | |
|  // IOleInPlaceFrame Implementation
 | |
|     BEGIN_INTERFACE_PART(OleInPlaceFrame, IOleInPlaceFrame)
 | |
|         STDMETHODIMP GetWindow(HWND* phWnd);
 | |
|         STDMETHODIMP ContextSensitiveHelp(BOOL fEnterMode);
 | |
|         STDMETHODIMP GetBorder(LPRECT prcBorder);
 | |
|         STDMETHODIMP RequestBorderSpace(LPCBORDERWIDTHS pBW);
 | |
|         STDMETHODIMP SetBorderSpace(LPCBORDERWIDTHS pBW);
 | |
|         STDMETHODIMP SetActiveObject(LPOLEINPLACEACTIVEOBJECT pIIPActiveObj, LPCOLESTR pszObj);
 | |
|         STDMETHODIMP InsertMenus(HMENU hMenu, LPOLEMENUGROUPWIDTHS pMGW);
 | |
|         STDMETHODIMP SetMenu(HMENU hMenu, HOLEMENU hOLEMenu, HWND hWndObj);
 | |
|         STDMETHODIMP RemoveMenus(HMENU hMenu);
 | |
|         STDMETHODIMP SetStatusText(LPCOLESTR pszText);
 | |
|         STDMETHODIMP EnableModeless(BOOL fEnable);
 | |
|         STDMETHODIMP TranslateAccelerator(LPMSG pMSG, WORD wID);
 | |
|     END_INTERFACE_PART(OleInPlaceFrame)
 | |
| 
 | |
|  // IOleCommandTarget  Implementation
 | |
|     BEGIN_INTERFACE_PART(OleCommandTarget , IOleCommandTarget)
 | |
|         STDMETHODIMP QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText);
 | |
|         STDMETHODIMP Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANTARG *pvaIn, VARIANTARG *pvaOut);            
 | |
|     END_INTERFACE_PART(OleCommandTarget)
 | |
| 
 | |
|  // IServiceProvider Implementation
 | |
|     BEGIN_INTERFACE_PART(ServiceProvider , IServiceProvider)
 | |
|         STDMETHODIMP QueryService(REFGUID guidService, REFIID riid, void **ppv);
 | |
|     END_INTERFACE_PART(ServiceProvider)
 | |
| 
 | |
|  // IAuthenticate  Implementation
 | |
|     BEGIN_INTERFACE_PART(Authenticate , IAuthenticate)
 | |
|         STDMETHODIMP Authenticate(HWND *phwnd, LPWSTR *pszUsername, LPWSTR *pszPassword);
 | |
|     END_INTERFACE_PART(Authenticate)
 | |
| 
 | |
|  // IContinueCallback Implementation
 | |
|     BEGIN_INTERFACE_PART(ContinueCallback , IContinueCallback)
 | |
|         STDMETHODIMP FContinue(void);
 | |
|         STDMETHODIMP FContinuePrinting(LONG cPagesPrinted, LONG nCurrentPage, LPOLESTR pwszPrintStatus);
 | |
|     END_INTERFACE_PART(ContinueCallback)
 | |
| 
 | |
|  // IOlePreviewCallback Implementation
 | |
|     BEGIN_INTERFACE_PART(PreviewCallback , IOlePreviewCallback)
 | |
|         STDMETHODIMP Notify(DWORD wStatus, LONG nLastPage, LPOLESTR pwszPreviewStatus);
 | |
|     END_INTERFACE_PART(PreviewCallback)
 | |
| 
 | |
|  // DocObject Class Methods IDsoDocObjectSite
 | |
|     STDMETHODIMP  InitializeNewInstance(IDsoDocObjectSite* phost);
 | |
|     STDMETHODIMP  CreateDocObject(REFCLSID rclsid);
 | |
|     STDMETHODIMP  CreateDocObject(IStorage *pstg);
 | |
|     STDMETHODIMP  CreateFromFile(LPWSTR pwszFile, REFCLSID rclsid, LPBIND_OPTS pbndopts);
 | |
|     STDMETHODIMP  CreateFromURL(LPWSTR pwszUrlFile, REFCLSID rclsid, LPBIND_OPTS pbndopts, LPWSTR pwszUserName, LPWSTR pwszPassword);
 | |
|     STDMETHODIMP  CreateFromRunningObject(LPUNKNOWN punkObj, LPWSTR pwszObjectName, LPBIND_OPTS pbndopts);
 | |
|     STDMETHODIMP  IPActivateView();
 | |
|     STDMETHODIMP  IPDeactivateView();
 | |
|     STDMETHODIMP  UIActivateView();
 | |
|     STDMETHODIMP  UIDeactivateView();
 | |
| 	STDMETHODIMP_(BOOL) IsDirty();
 | |
|     STDMETHODIMP  Save();
 | |
|     STDMETHODIMP  SaveToFile(LPWSTR pwszFile, BOOL fOverwriteFile);
 | |
|     STDMETHODIMP  SaveToURL(LPWSTR pwszURL, BOOL fOverwriteFile, LPWSTR pwszUserName, LPWSTR pwszPassword);
 | |
|     STDMETHODIMP  PrintDocument(LPCWSTR pwszPrinter, LPCWSTR pwszOutput, UINT cCopies, UINT nFrom, UINT nTo, BOOL fPromptUser);
 | |
|     STDMETHODIMP  StartPrintPreview();
 | |
|     STDMETHODIMP  ExitPrintPreview(BOOL fForceExit);
 | |
|     STDMETHODIMP  DoOleCommand(DWORD dwOleCmdId, DWORD dwOptions, VARIANT* vInParam, VARIANT* vInOutParam);
 | |
|     STDMETHODIMP  Close();
 | |
| 
 | |
|  // Control should notify us on these conditions (so we can pass to IP object)...
 | |
|     STDMETHODIMP_(void) OnNotifySizeChange(LPRECT prc);
 | |
|     STDMETHODIMP_(void) OnNotifyAppActivate(BOOL fActive, DWORD dwThreadID);
 | |
|     STDMETHODIMP_(void) OnNotifyPaletteChanged(HWND hwndPalChg);
 | |
|     STDMETHODIMP_(void) OnNotifyChangeToolState(BOOL fShowTools);
 | |
|     STDMETHODIMP_(void) OnNotifyControlFocus(BOOL fGotFocus);
 | |
|    
 | |
|     STDMETHODIMP  HrGetDataFromObject(VARIANT *pvtType, VARIANT *pvtOutput);
 | |
|     STDMETHODIMP  HrSetDataInObject(VARIANT *pvtType, VARIANT *pvtInput, BOOL fMbcsString);
 | |
| 
 | |
|     STDMETHODIMP_(BOOL) GetDocumentTypeAndFileExtension(WCHAR** ppwszFileType, WCHAR** ppwszFileExt);
 | |
| 
 | |
|  // Inline accessors for control to get IP object info...
 | |
|     inline IOleInPlaceActiveObject*  GetActiveObject(){return m_pipactive;}
 | |
|     inline IOleObject*               GetOleObject(){return m_pole;}
 | |
| 	inline HWND         GetDocWindow(){return m_hwnd;}
 | |
|     inline HWND         GetActiveWindow(){return m_hwndUIActiveObj;}
 | |
|     inline BOOL         IsReadOnly(){return m_fOpenReadOnly;}
 | |
|     inline BOOL         InPrintPreview(){return ((m_pprtprv != NULL) || (m_fInPptSlideShow));}
 | |
|     inline HWND         GetMenuHWND(){return m_hwndMenuObj;}
 | |
|     inline HMENU        GetActiveMenu(){return m_hMenuActive;}
 | |
| 	inline HMENU        GetMergedMenu(){return m_hMenuMerged;}
 | |
| 	inline void         SetMergedMenu(HMENU h){m_hMenuMerged = h;}
 | |
|     inline LPCWSTR      GetSourceName(){return ((m_pwszWebResource) ? m_pwszWebResource : m_pwszSourceFile);}
 | |
|     inline LPCWSTR      GetSourceDocName(){return ((m_pwszSourceFile) ? &m_pwszSourceFile[m_idxSourceName] : NULL);}
 | |
|     inline CLSID*       GetServerCLSID(){return &m_clsidObject;}
 | |
|     inline BOOL         IsIPActive(){return (m_pipobj != NULL);}
 | |
| 
 | |
| 	BOOL IsWordObject()
 | |
| 	{return ((m_clsidObject == CLSID_WORD_DOCUMENT_DOC) || 
 | |
| 			 (m_clsidObject == CLSID_WORD_DOCUMENT_DOCX) || 
 | |
| 			 (m_clsidObject == CLSID_WORD_DOCUMENT_DOCM));
 | |
| 	}
 | |
| 	BOOL IsExcelObject()
 | |
| 	{return ((m_clsidObject == CLSID_EXCEL_WORKBOOK_XLS) || 
 | |
| 			 (m_clsidObject == CLSID_EXCEL_WORKBOOK_XLSX) ||
 | |
| 			 (m_clsidObject == CLSID_EXCEL_WORKBOOK_XLSM) ||
 | |
| 			 (m_clsidObject == CLSID_EXCEL_WORKBOOK_XLSB) ||
 | |
| 			 (m_clsidObject == CLSID_EXCEL_CHART_XLS));
 | |
| 	}
 | |
| 	BOOL IsPPTObject()
 | |
| 	{return ((m_clsidObject == CLSID_PPT_PRESENTATION_PPT) || 
 | |
| 			 (m_clsidObject == CLSID_PPT_PRESENTATION_PPTX) || 
 | |
| 			 (m_clsidObject == CLSID_PPT_PRESENTATION_PPTM));
 | |
| 	}
 | |
| 	BOOL IsVisioObject()
 | |
| 	{return (m_clsidObject == CLSID_VISIO_DRAWING_VSD);}
 | |
| 
 | |
|     STDMETHODIMP SetRunningServerLock(BOOL fLock);
 | |
| 
 | |
| protected:
 | |
|  // Internal helper methods...
 | |
|     STDMETHODIMP             InstantiateDocObjectServer(REFCLSID rclsid, IOleObject **ppole);
 | |
|     STDMETHODIMP             CreateObjectStorage(REFCLSID rclsid);
 | |
|     STDMETHODIMP             SaveObjectStorage();
 | |
|     STDMETHODIMP             SaveDocToMoniker(IMoniker *pmk, IBindCtx *pbc, BOOL fKeepLock);
 | |
|     STDMETHODIMP             SaveDocToFile(LPWSTR pwszFullName, BOOL fKeepLock);
 | |
|     STDMETHODIMP             ValidateDocObjectServer(REFCLSID rclsid);
 | |
|     STDMETHODIMP_(BOOL)      ValidateFileExtension(WCHAR* pwszFile, WCHAR** ppwszOut);
 | |
| 
 | |
|     STDMETHODIMP_(void)      OnDraw(DWORD dvAspect, HDC hdcDraw, LPRECT prcBounds, LPRECT prcWBounds, HDC hicTargetDev, BOOL fOptimize);
 | |
| 
 | |
|     STDMETHODIMP             EnsureOleServerRunning(BOOL fLockRunning);
 | |
|     STDMETHODIMP_(void)      FreeRunningLock();
 | |
|     STDMETHODIMP_(void)      TurnOffWebToolbar(BOOL fTurnedOff);
 | |
|     STDMETHODIMP_(void)      ClearMergedMenu();
 | |
|     STDMETHODIMP_(DWORD)     CalcDocNameIndex(LPCWSTR pwszPath);
 | |
|     STDMETHODIMP_(void)      CheckForPPTPreviewChange();
 | |
| 
 | |
|  // These functions allow the component to access files in a Web Folder for 
 | |
|  // write access using the Microsoft Provider for Internet Publishing (MSDAIPP), 
 | |
|  // which is installed by Office and comes standard in Windows 2000/ME/XP/2003. The
 | |
|  // provider is not required to use the component, only if you wish to save to 
 | |
|  // an FPSE or DAV Web Folder (URL). 
 | |
|     STDMETHODIMP_(IUnknown*) CreateIPPBindResource();
 | |
|     STDMETHODIMP             IPPDownloadWebResource(LPWSTR pwszURL, LPWSTR pwszFile, IStream** ppstmKeepForSave);
 | |
|     STDMETHODIMP             IPPUploadWebResource(LPWSTR pwszFile, IStream** ppstmSave, LPWSTR pwszURLSaveTo, BOOL fOverwriteFile);
 | |
| 
 | |
|     static STDMETHODIMP_(LRESULT)  FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
 | |
| 
 | |
|  // The private class variables...
 | |
| private:
 | |
|     ULONG                m_cRef;				// Reference count
 | |
|     HWND                 m_hwnd;                // our window
 | |
|     HWND                 m_hwndCtl;             // The control's window
 | |
|     RECT                 m_rcViewRect;          // Viewable area (set by host)
 | |
|     IDsoDocObjectSite   *m_psiteCtl;            // The control's site interface
 | |
|     IOleCommandTarget   *m_pcmdCtl;             // IOCT of host (for frame msgs)
 | |
| 
 | |
|     LPWSTR               m_pwszHostName;        // Ole Host Name for container
 | |
|     LPWSTR               m_pwszSourceFile;      // Path to Source File (on Open)
 | |
|     IMoniker            *m_pmkSourceFile;       // Moniker to original source file 
 | |
|     IBindCtx            *m_pbctxSourceFile;     // Bind context used to original source file
 | |
|     IStorage            *m_pstgSourceFile;      // Original File Storage (if open/save file)
 | |
|     DWORD                m_idxSourceName;       // Index to doc name in m_pwszSourceFile
 | |
| 
 | |
|     CLSID                m_clsidObject;         // CLSID of the embedded object
 | |
|     IStorage            *m_pstgroot;            // Root temp storage
 | |
|     IStorage            *m_pstgfile;            // In-memory file storage
 | |
|     IStream             *m_pstmview;            // In-memory view info stream
 | |
| 
 | |
|     LPWSTR               m_pwszWebResource;     // The full URL to the web resource
 | |
|     IStream             *m_pstmWebResource;     // Original Download Stream (if open/save URL)
 | |
|     IUnknown            *m_punkIPPResource;     // MSDAIPP provider resource (for URL authoring)
 | |
|     LPWSTR               m_pwszUsername;        // Username and password used by MSDAIPP
 | |
|     LPWSTR               m_pwszPassword;        // for Authentication (see IAuthenticate)
 | |
| 
 | |
|     IOleObject              *m_pole;            // Embedded OLE Object (OLE)
 | |
|     IOleInPlaceObject       *m_pipobj;          // The IP object methods (OLE)
 | |
|     IOleInPlaceActiveObject *m_pipactive;       // The UI Active object methods (OLE)
 | |
|     IOleDocumentView        *m_pdocv;           // MSO Document View (DocObj)
 | |
|     IOleCommandTarget       *m_pcmdt;           // MSO Command Target (DocObj)
 | |
|     IOleInplacePrintPreview *m_pprtprv;         // MSO Print Preview (DocObj)
 | |
| 
 | |
|     HMENU                m_hMenuActive;         // The menu supplied by embedded object
 | |
|     HMENU                m_hMenuMerged;         // The merged menu (set by control host)
 | |
|     HOLEMENU             m_holeMenu;            // The OLE Menu Descriptor
 | |
|     HWND                 m_hwndMenuObj;         // The window for menu commands
 | |
|     HWND                 m_hwndIPObject;        // IP active object window
 | |
|     HWND                 m_hwndUIActiveObj;     // UI Active object window
 | |
|     DWORD                m_dwObjectThreadID;    // Thread Id of UI server
 | |
|     BORDERWIDTHS         m_bwToolSpace;         // Toolspace...
 | |
| 
 | |
|  // Bitflags (state info)...
 | |
|     unsigned int         m_fDisplayTools:1;
 | |
|     unsigned int         m_fDisconnectOnQuit:1;
 | |
|     unsigned int         m_fAppWindowActive:1;
 | |
|     unsigned int         m_fOpenReadOnly:1;
 | |
|     unsigned int         m_fObjectInModalCondition:1;
 | |
|     unsigned int         m_fObjectIPActive:1;
 | |
|     unsigned int         m_fObjectUIActive:1;
 | |
|     unsigned int         m_fObjectActivateComplete:1;
 | |
| 	unsigned int         m_fLockedServerRunning:1;
 | |
| 	unsigned int         m_fLoadedFromAuto:1;
 | |
| 	unsigned int         m_fInClose:1;
 | |
| 	unsigned int         m_fAttemptPptPreview:1;
 | |
| 	unsigned int         m_fInPptSlideShow:1;
 | |
| 
 | |
| };
 | |
| 
 | |
| 
 | |
| #endif //DS_DSOFDOCOBJ_H
 | 
