windows-nt/Source/XPSP1/NT/public/sdk/inc/mfc42/afxodlgs.h
2020-09-26 16:20:57 +08:00

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__
/////////////////////////////////////////////////////////////////////////////