517 lines
13 KiB
C++
517 lines
13 KiB
C++
// This is a part of the Microsoft Foundation Classes C++ library.
|
|
// Copyright (C) 1992-1998 Microsoft Corporation
|
|
// All rights reserved.
|
|
//
|
|
// This source code is only intended as a supplement to the
|
|
// Microsoft Foundation Classes Reference and related
|
|
// electronic documentation provided with the library.
|
|
// See these sources for detailed information regarding the
|
|
// Microsoft Foundation Classes product.
|
|
|
|
#ifndef __AFXODLGS_H__
|
|
#define __AFXODLGS_H__
|
|
|
|
#ifdef _AFX_NO_OLE_SUPPORT
|
|
#error OLE classes not supported in this library variant.
|
|
#endif
|
|
|
|
#ifndef __AFXOLE_H__
|
|
#include <afxole.h>
|
|
#endif
|
|
|
|
#ifndef __AFXDLGS_H__
|
|
#include <afxdlgs.h>
|
|
#endif
|
|
|
|
// include OLE dialog/helper APIs
|
|
#ifndef _OLEDLG_H_
|
|
#include <oledlg.h>
|
|
#endif
|
|
|
|
#ifdef _AFX_MINREBUILD
|
|
#pragma component(minrebuild, off)
|
|
#endif
|
|
#ifndef _AFX_FULLTYPEINFO
|
|
#pragma component(mintypeinfo, on)
|
|
#endif
|
|
|
|
#ifdef _AFX_PACKING
|
|
#pragma pack(push, _AFX_PACKING)
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// AFXODLGS.H - MFC OLE dialogs
|
|
|
|
// Classes declared in this file
|
|
|
|
//CCommonDialog
|
|
class COleDialog; // base class for OLE dialog wrappers
|
|
class COleInsertDialog; // insert object dialog
|
|
class COleConvertDialog; // convert dialog
|
|
class COleChangeIconDialog; // change icon dialog
|
|
class COlePasteSpecialDialog; // paste special dialog
|
|
class COleLinksDialog; // edit links dialog
|
|
class COleUpdateDialog; // update links/embeddings dialog
|
|
class COleBusyDialog; // used for
|
|
class COlePropertiesDialog;
|
|
class COleChangeSourceDialog;
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// AFXDLL support
|
|
#undef AFX_DATA
|
|
#define AFX_DATA AFX_OLE_DATA
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COleUILinkInfo -- used internally to implement
|
|
// IOleUILinkInfo and IOleUILinkContainer
|
|
// used by COleLinksDialog and COleChangeSourceDialog
|
|
|
|
class COleUILinkInfo : public IOleUILinkInfo
|
|
{
|
|
public:
|
|
COleUILinkInfo(COleDocument* pDocument);
|
|
|
|
// Implementation
|
|
COleDocument* m_pDocument; // document being manipulated
|
|
COleClientItem* m_pSelectedItem; // primary selected item in m_pDocument
|
|
POSITION m_pos; // used during link enumeration
|
|
BOOL m_bUpdateLinks; // update links?
|
|
BOOL m_bUpdateEmbeddings; // update embeddings?
|
|
|
|
STDMETHOD_(ULONG, AddRef)();
|
|
STDMETHOD_(ULONG, Release)();
|
|
STDMETHOD(QueryInterface)(REFIID, LPVOID*);
|
|
|
|
// IOleUILinkContainer
|
|
STDMETHOD_(DWORD,GetNextLink)(DWORD);
|
|
STDMETHOD(SetLinkUpdateOptions)(DWORD, DWORD);
|
|
STDMETHOD(GetLinkUpdateOptions)(DWORD, LPDWORD);
|
|
STDMETHOD(SetLinkSource)(DWORD, LPTSTR, ULONG, ULONG*, BOOL);
|
|
STDMETHOD(GetLinkSource)(DWORD, LPTSTR*, ULONG*, LPTSTR*, LPTSTR*, BOOL*,
|
|
BOOL*);
|
|
STDMETHOD(OpenLinkSource)(DWORD);
|
|
STDMETHOD(UpdateLink)(DWORD, BOOL, BOOL);
|
|
STDMETHOD(CancelLink)(DWORD);
|
|
// IOleUILinkInfo
|
|
STDMETHOD(GetLastUpdate)(DWORD dwLink, FILETIME* lpLastUpdate);
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Wrappers for OLE UI dialogs
|
|
|
|
#ifdef _AFXDLL
|
|
class COleDialog : public CCommonDialog
|
|
#else
|
|
class AFX_NOVTABLE COleDialog : public CCommonDialog
|
|
#endif
|
|
{
|
|
DECLARE_DYNAMIC(COleDialog)
|
|
|
|
// Attributes
|
|
public:
|
|
UINT GetLastError() const;
|
|
|
|
// Implementation
|
|
public:
|
|
int MapResult(UINT nResult);
|
|
COleDialog(CWnd* pParentWnd);
|
|
#ifdef _DEBUG
|
|
virtual void Dump(CDumpContext& dc) const;
|
|
#endif
|
|
|
|
protected:
|
|
UINT m_nLastError;
|
|
|
|
protected:
|
|
friend UINT CALLBACK _AfxOleHookProc(HWND, UINT, WPARAM, LPARAM);
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COleInsertDialog
|
|
|
|
class COleInsertDialog : public COleDialog
|
|
{
|
|
DECLARE_DYNAMIC(COleInsertDialog)
|
|
|
|
// Attributes
|
|
public:
|
|
OLEUIINSERTOBJECT m_io; // structure for OleUIInsertObject
|
|
|
|
// Constructors
|
|
COleInsertDialog(DWORD dwFlags = IOF_SELECTCREATENEW,
|
|
CWnd* pParentWnd = NULL);
|
|
|
|
// Operations
|
|
virtual INT_PTR DoModal();
|
|
#if _MFC_VER >= 0x0600
|
|
INT_PTR DoModal(DWORD dwFlags);
|
|
#endif
|
|
BOOL CreateItem(COleClientItem* pItem);
|
|
// call after DoModal to create item based on dialog data
|
|
|
|
// Attributes (after DoModal returns IDOK)
|
|
enum Selection { createNewItem, insertFromFile, linkToFile };
|
|
UINT GetSelectionType() const;
|
|
// return type of selection made
|
|
|
|
CString GetPathName() const; // return full path name
|
|
REFCLSID GetClassID() const; // get class ID of new item
|
|
|
|
DVASPECT GetDrawAspect() const;
|
|
// DVASPECT_CONTENT or DVASPECT_ICON
|
|
HGLOBAL GetIconicMetafile() const;
|
|
// returns HGLOBAL to METAFILEPICT struct with iconic data
|
|
|
|
// Implementation
|
|
public:
|
|
virtual ~COleInsertDialog();
|
|
#ifdef _DEBUG
|
|
virtual void Dump(CDumpContext& dc) const;
|
|
#endif
|
|
|
|
#if _MFC_VER >= 0x0600
|
|
enum FilterFlags {
|
|
DocObjectsOnly = 1,
|
|
ControlsOnly = 2,
|
|
};
|
|
#endif
|
|
|
|
protected:
|
|
TCHAR m_szFileName[_MAX_PATH];
|
|
// contains full path name after return
|
|
|
|
#if _MFC_VER >= 0x0600
|
|
void AddClassIDToList(LPCLSID& lpList, int& nListCount,
|
|
int& nBufferLen, LPCLSID pNewID);
|
|
#endif
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COleConvertDialog
|
|
|
|
class COleConvertDialog : public COleDialog
|
|
{
|
|
DECLARE_DYNAMIC(COleConvertDialog)
|
|
|
|
// Attributes
|
|
public:
|
|
OLEUICONVERT m_cv; // structure for OleUIConvert
|
|
|
|
// Constructors
|
|
COleConvertDialog(COleClientItem* pItem,
|
|
DWORD dwFlags = CF_SELECTCONVERTTO, CLSID* pClassID = NULL,
|
|
CWnd* pParentWnd = NULL);
|
|
|
|
// Operations
|
|
virtual INT_PTR DoModal();
|
|
// just display the dialog and collect convert info
|
|
BOOL DoConvert(COleClientItem* pItem);
|
|
// do the conversion on pItem (after DoModal == IDOK)
|
|
|
|
// Attributes (after DoModal returns IDOK)
|
|
enum Selection { noConversion, convertItem, activateAs };
|
|
UINT GetSelectionType() const;
|
|
|
|
HGLOBAL GetIconicMetafile() const; // will return NULL if same as before
|
|
REFCLSID GetClassID() const; // get class ID to convert or activate as
|
|
DVASPECT GetDrawAspect() const; // get new draw aspect
|
|
|
|
// Implementation
|
|
public:
|
|
virtual ~COleConvertDialog();
|
|
#ifdef _DEBUG
|
|
virtual void Dump(CDumpContext& dc) const;
|
|
#endif
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COleChangeIconDialog
|
|
|
|
class COleChangeIconDialog : public COleDialog
|
|
{
|
|
DECLARE_DYNAMIC(COleChangeIconDialog)
|
|
|
|
// Attributes
|
|
public:
|
|
OLEUICHANGEICON m_ci; // structure for OleUIChangeIcon
|
|
|
|
// Constructors
|
|
COleChangeIconDialog(COleClientItem* pItem,
|
|
DWORD dwFlags = CIF_SELECTCURRENT,
|
|
CWnd* pParentWnd = NULL);
|
|
|
|
// Operations
|
|
virtual INT_PTR DoModal();
|
|
BOOL DoChangeIcon(COleClientItem* pItem);
|
|
|
|
// Attributes
|
|
HGLOBAL GetIconicMetafile() const;
|
|
|
|
// Implementation
|
|
public:
|
|
virtual ~COleChangeIconDialog();
|
|
#ifdef _DEBUG
|
|
virtual void Dump(CDumpContext& dc) const;
|
|
#endif
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COlePasteSpecialDialog
|
|
|
|
class COlePasteSpecialDialog : public COleDialog
|
|
{
|
|
DECLARE_DYNAMIC(COlePasteSpecialDialog)
|
|
|
|
// Attributes
|
|
public:
|
|
OLEUIPASTESPECIAL m_ps; // structure for OleUIPasteSpecial
|
|
|
|
// Constructors
|
|
COlePasteSpecialDialog(DWORD dwFlags = PSF_SELECTPASTE,
|
|
COleDataObject* pDataObject = NULL, CWnd *pParentWnd = NULL);
|
|
|
|
// Operations
|
|
OLEUIPASTEFLAG AddLinkEntry(UINT cf);
|
|
void AddFormat(const FORMATETC& formatEtc, LPTSTR lpszFormat,
|
|
LPTSTR lpszResult, DWORD flags);
|
|
void AddFormat(UINT cf, DWORD tymed, UINT nFormatID, BOOL bEnableIcon,
|
|
BOOL bLink);
|
|
void AddStandardFormats(BOOL bEnableLink = TRUE);
|
|
|
|
virtual INT_PTR DoModal();
|
|
BOOL CreateItem(COleClientItem *pNewItem);
|
|
// creates a standard OLE item from selection data
|
|
|
|
// Attributes (after DoModal returns IDOK)
|
|
int GetPasteIndex() const; // resulting index to use for paste
|
|
|
|
enum Selection { pasteLink = 1, pasteNormal = 2, pasteStatic = 3, pasteOther = 4};
|
|
UINT GetSelectionType() const;
|
|
// get selection type (pasteLink, pasteNormal, pasteStatic)
|
|
|
|
DVASPECT GetDrawAspect() const;
|
|
// DVASPECT_CONTENT or DVASPECT_ICON
|
|
HGLOBAL GetIconicMetafile() const;
|
|
// returns HGLOBAL to METAFILEPICT struct with iconic data
|
|
|
|
// Implementation
|
|
public:
|
|
virtual ~COlePasteSpecialDialog();
|
|
#ifdef _DEBUG
|
|
virtual void Dump(CDumpContext& dc) const;
|
|
virtual void AssertValid() const;
|
|
#endif
|
|
unsigned int m_arrLinkTypes[8];
|
|
// size limit imposed by MFCUIx32.DLL library
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COleLinksDialog
|
|
|
|
class COleLinksDialog : public COleDialog
|
|
{
|
|
DECLARE_DYNAMIC(COleLinksDialog)
|
|
|
|
// Attributes
|
|
public:
|
|
OLEUIEDITLINKS m_el; // structure for OleUIEditLinks
|
|
|
|
// Constructors
|
|
COleLinksDialog(COleDocument* pDoc, CView* pView, DWORD dwFlags = 0,
|
|
CWnd* pParentWnd = NULL);
|
|
|
|
// Operations
|
|
virtual INT_PTR DoModal(); // display the dialog and edit links
|
|
|
|
// Implementation
|
|
public:
|
|
virtual ~COleLinksDialog();
|
|
#ifdef _DEBUG
|
|
virtual void Dump(CDumpContext& dc) const;
|
|
virtual void AssertValid() const;
|
|
#endif
|
|
|
|
public:
|
|
COleUILinkInfo m_xLinkInfo; // implements IOleUILinkContainer
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COleUpdateDialog
|
|
|
|
class COleUpdateDialog : public COleLinksDialog
|
|
{
|
|
DECLARE_DYNAMIC(COleUpdateDialog)
|
|
|
|
// Constructors
|
|
public:
|
|
COleUpdateDialog(COleDocument* pDoc,
|
|
BOOL bUpdateLinks = TRUE, BOOL bUpdateEmbeddings = FALSE,
|
|
CWnd* pParentWnd = NULL);
|
|
|
|
// Operations
|
|
virtual INT_PTR DoModal();
|
|
|
|
// Implementation
|
|
public:
|
|
virtual ~COleUpdateDialog();
|
|
#ifdef _DEBUG
|
|
virtual void Dump(CDumpContext& dc) const;
|
|
#endif
|
|
|
|
protected:
|
|
CString m_strCaption; // caption for the dialog
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COleBusyDialog - useful in managing concurrency
|
|
|
|
class COleBusyDialog : public COleDialog
|
|
{
|
|
DECLARE_DYNAMIC(COleBusyDialog)
|
|
|
|
// Attributes
|
|
public:
|
|
OLEUIBUSY m_bz;
|
|
|
|
// Constructors
|
|
COleBusyDialog(HTASK htaskBusy, BOOL bNotResponding = FALSE,
|
|
DWORD dwFlags = 0, CWnd* pParentWnd = NULL);
|
|
|
|
// Operations
|
|
virtual INT_PTR DoModal();
|
|
|
|
enum Selection { switchTo = 1, retry = 2, callUnblocked = 3 };
|
|
UINT GetSelectionType() const;
|
|
|
|
// Implementation
|
|
public:
|
|
~COleBusyDialog();
|
|
#ifdef _DEBUG
|
|
virtual void Dump(CDumpContext& dc) const;
|
|
#endif
|
|
|
|
protected:
|
|
Selection m_selection; // selection after DoModal returns IDOK
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COleEditProperties
|
|
|
|
class COlePropertiesDialog : public COleDialog
|
|
{
|
|
DECLARE_DYNAMIC(COlePropertiesDialog)
|
|
|
|
// Attributes
|
|
public:
|
|
OLEUIOBJECTPROPS m_op; // structure for OleUIObjectProperties
|
|
OLEUIGNRLPROPS m_gp; // specific to "General" page
|
|
OLEUIVIEWPROPS m_vp; // specific to "View" page
|
|
OLEUILINKPROPS m_lp; // specific to "Link" page
|
|
PROPSHEETHEADER m_psh; // PROPSHEETHEADER for customization
|
|
|
|
// Constructors
|
|
public:
|
|
COlePropertiesDialog(COleClientItem* pItem,
|
|
UINT nScaleMin = 10, UINT nScaleMax = 500, CWnd* pParentWnd = NULL);
|
|
|
|
// Operations
|
|
virtual INT_PTR DoModal();
|
|
|
|
// Overridables
|
|
virtual BOOL OnApplyScale(
|
|
COleClientItem* pItem, int nCurrentScale, BOOL bRelativeToOrig);
|
|
|
|
// Implementation
|
|
public:
|
|
#ifdef _DEBUG
|
|
virtual void Dump(CDumpContext& dc) const;
|
|
virtual void AssertValid() const;
|
|
#endif
|
|
virtual BOOL OnInitDialog();
|
|
|
|
BEGIN_INTERFACE_PART(OleUIObjInfo, IOleUIObjInfo)
|
|
INIT_INTERFACE_PART(COlePropertiesDialog, OleUIObjInfo)
|
|
STDMETHOD(GetObjectInfo) (THIS_ DWORD dwObject,
|
|
DWORD* lpdwObjSize, LPTSTR* lplpszLabel,
|
|
LPTSTR* lplpszType, LPTSTR* lplpszShortType,
|
|
LPTSTR* lplpszLocation);
|
|
STDMETHOD(GetConvertInfo) (THIS_ DWORD dwObject,
|
|
CLSID* lpClassID, WORD* lpwFormat,
|
|
CLSID* lpConvertDefaultClassID,
|
|
LPCLSID* lplpClsidExclude, UINT* lpcClsidExclude);
|
|
STDMETHOD(ConvertObject) (THIS_ DWORD dwObject, REFCLSID clsidNew);
|
|
STDMETHOD(GetViewInfo) (THIS_ DWORD dwObject,
|
|
HGLOBAL* phMetaPict, DWORD* pdvAspect, int* pnCurrentScale);
|
|
STDMETHOD(SetViewInfo) (THIS_ DWORD dwObject,
|
|
HGLOBAL hMetaPict, DWORD dvAspect,
|
|
int nCurrentScale, BOOL bRelativeToOrig);
|
|
END_INTERFACE_PART(OleUIObjInfo)
|
|
COleUILinkInfo m_xLinkInfo; // implements IOleUILinkContainer
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// COleChangeSourceDialog
|
|
|
|
class COleChangeSourceDialog : public COleDialog
|
|
{
|
|
DECLARE_DYNAMIC(COleChangeSourceDialog)
|
|
|
|
// Attributes
|
|
public:
|
|
OLEUICHANGESOURCE m_cs; // structure for OleUIChangeSource
|
|
|
|
// Constructors
|
|
public:
|
|
COleChangeSourceDialog(COleClientItem* pItem, CWnd* pParentWnd = NULL);
|
|
|
|
// Operations
|
|
virtual INT_PTR DoModal();
|
|
|
|
// Attributes (after DoModal returns IDOK)
|
|
BOOL IsValidSource();
|
|
CString GetDisplayName();
|
|
CString GetFileName();
|
|
CString GetItemName();
|
|
CString GetFromPrefix();
|
|
CString GetToPrefix();
|
|
|
|
// Implementation
|
|
public:
|
|
COleUILinkInfo m_xLinkInfo;
|
|
|
|
virtual ~COleChangeSourceDialog();
|
|
#ifdef _DEBUG
|
|
virtual void Dump(CDumpContext& dc) const;
|
|
virtual void AssertValid() const;
|
|
#endif
|
|
virtual void PreInitDialog();
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Inline function declarations
|
|
|
|
#ifdef _AFX_PACKING
|
|
#pragma pack(pop)
|
|
#endif
|
|
|
|
#ifdef _AFX_ENABLE_INLINES
|
|
#define _AFXODLGS_INLINE AFX_INLINE
|
|
#include <afxole.inl>
|
|
#undef _AFXODLGS_INLINE
|
|
#endif
|
|
|
|
#undef AFX_DATA
|
|
#define AFX_DATA
|
|
|
|
#ifdef _AFX_MINREBUILD
|
|
#pragma component(minrebuild, on)
|
|
#endif
|
|
#ifndef _AFX_FULLTYPEINFO
|
|
#pragma component(mintypeinfo, off)
|
|
#endif
|
|
|
|
#endif //__AFXODLGS_H__
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|