mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
804 lines
32 KiB
804 lines
32 KiB
/*++ BUILD Version: 0001 Increment this if a change has global effects
|
|
|
|
Copyright (c) 1993-1994, Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
ole2ui.h
|
|
|
|
Abstract:
|
|
|
|
Include file for the OLE common dialogs.
|
|
The following dialog implementations are provided:
|
|
- Insert Object Dialog
|
|
- Convert Object Dialog
|
|
- Paste Special Dialog
|
|
- Change Icon Dialog
|
|
- Edit Links Dialog
|
|
- Update Links Dialog
|
|
- Change Source Dialog
|
|
- Busy Dialog
|
|
- User Error Message Dialog
|
|
- Object Properties Dialog
|
|
|
|
--*/
|
|
|
|
#ifndef _OLE2UI_H_
|
|
#define _OLE2UI_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef __cplusplus
|
|
#define NONAMELESSUNION // use strict ANSI standard (for DVOBJ.H)
|
|
#endif
|
|
|
|
// syncronize UNICODE options
|
|
#if defined(_UNICODE) && !defined(UNICODE)
|
|
#define UNICODE
|
|
#endif
|
|
#if defined(UNICODE) && !defined(_UNICODE)
|
|
#define _UNICODE
|
|
#endif
|
|
|
|
// syncronize OLE2ANSI option w/ _UNICODE
|
|
#if !defined(_UNICODE) && !defined(OLE2ANSI)
|
|
#define OLE2ANSI
|
|
#endif
|
|
|
|
#ifndef _WINDOWS_
|
|
#include <windows.h>
|
|
#endif
|
|
#ifndef _INC_SHELLAPI
|
|
#include <shellapi.h>
|
|
#endif
|
|
#ifndef _INC_COMMDLG
|
|
#include <commdlg.h>
|
|
#endif
|
|
#ifndef _OLE2_H_
|
|
#include <ole2.h>
|
|
#endif
|
|
#include <string.h>
|
|
#include <dlgs.h> // common dialog IDs
|
|
#include <oledlgs.h> // OLE common dialog IDs
|
|
#include <tchar.h>
|
|
|
|
#pragma pack(push, 8)
|
|
|
|
#ifndef EXPORT
|
|
#define EXPORT
|
|
#endif
|
|
|
|
// Delimeter used to separate ItemMoniker pieces of a composite moniker
|
|
#ifdef _MAC
|
|
#define OLESTDDELIM ":"
|
|
#else
|
|
#define OLESTDDELIM TEXT("\\")
|
|
#endif
|
|
|
|
// Hook type used in all structures.
|
|
typedef UINT (CALLBACK *LPFNOLEUIHOOK)(HWND, UINT, WPARAM, LPARAM);
|
|
|
|
// Strings for registered messages
|
|
#define SZOLEUI_MSG_HELP TEXT("OLEUI_MSG_HELP")
|
|
#define SZOLEUI_MSG_ENDDIALOG TEXT("OLEUI_MSG_ENDDIALOG")
|
|
#define SZOLEUI_MSG_BROWSE TEXT("OLEUI_MSG_BROWSE")
|
|
#define SZOLEUI_MSG_CHANGEICON TEXT("OLEUI_MSG_CHANGEICON")
|
|
#define SZOLEUI_MSG_CLOSEBUSYDIALOG TEXT("OLEUI_MSG_CLOSEBUSYDIALOG")
|
|
#define SZOLEUI_MSG_CONVERT TEXT("OLEUI_MSG_CONVERT")
|
|
#define SZOLEUI_MSG_CHANGESOURCE TEXT("OLEUI_MSG_CHANGESOURCE")
|
|
#define SZOLEUI_MSG_ADDCONTROL TEXT("OLEUI_MSG_ADDCONTROL")
|
|
#define SZOLEUI_MSG_BROWSE_OFN TEXT("OLEUI_MSG_BROWSE_OFN")
|
|
|
|
// Identifiers for SZOLEUI_MSG_BROWSE_OFN (in wParam)
|
|
#define ID_BROWSE_CHANGEICON 1
|
|
#define ID_BROWSE_INSERTFILE 2
|
|
#define ID_BROWSE_ADDCONTROL 3
|
|
#define ID_BROWSE_CHANGESOURCE 4
|
|
|
|
// Standard success/error definitions
|
|
#define OLEUI_FALSE 0
|
|
#define OLEUI_SUCCESS 1 // No error, same as OLEUI_OK
|
|
#define OLEUI_OK 1 // OK button pressed
|
|
#define OLEUI_CANCEL 2 // Cancel button pressed
|
|
|
|
#define OLEUI_ERR_STANDARDMIN 100
|
|
#define OLEUI_ERR_STRUCTURENULL 101 // Standard field validation
|
|
#define OLEUI_ERR_STRUCTUREINVALID 102
|
|
#define OLEUI_ERR_CBSTRUCTINCORRECT 103
|
|
#define OLEUI_ERR_HWNDOWNERINVALID 104
|
|
#define OLEUI_ERR_LPSZCAPTIONINVALID 105
|
|
#define OLEUI_ERR_LPFNHOOKINVALID 106
|
|
#define OLEUI_ERR_HINSTANCEINVALID 107
|
|
#define OLEUI_ERR_LPSZTEMPLATEINVALID 108
|
|
#define OLEUI_ERR_HRESOURCEINVALID 109
|
|
|
|
#define OLEUI_ERR_FINDTEMPLATEFAILURE 110 // Initialization errors
|
|
#define OLEUI_ERR_LOADTEMPLATEFAILURE 111
|
|
#define OLEUI_ERR_DIALOGFAILURE 112
|
|
#define OLEUI_ERR_LOCALMEMALLOC 113
|
|
#define OLEUI_ERR_GLOBALMEMALLOC 114
|
|
#define OLEUI_ERR_LOADSTRING 115
|
|
#define OLEUI_ERR_OLEMEMALLOC 116
|
|
|
|
#define OLEUI_ERR_STANDARDMAX 117 // Start here for specific errors.
|
|
|
|
// Miscellaneous utility functions.
|
|
STDAPI_(BOOL) OleUIAddVerbMenu(LPOLEOBJECT lpOleObj, LPCTSTR lpszShortType,
|
|
HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax,
|
|
BOOL bAddConvert, UINT idConvert, HMENU FAR *lphMenu);
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// INSERT OBJECT DIALOG
|
|
|
|
typedef struct tagOLEUIINSERTOBJECT
|
|
{
|
|
// These IN fields are standard across all OLEUI dialog functions.
|
|
DWORD cbStruct; // Structure Size
|
|
DWORD dwFlags; // IN-OUT: Flags
|
|
HWND hWndOwner; // Owning window
|
|
LPCTSTR lpszCaption; // Dialog caption bar contents
|
|
LPFNOLEUIHOOK lpfnHook; // Hook callback
|
|
LPARAM lCustData; // Custom data to pass to hook
|
|
HINSTANCE hInstance; // Instance for customized template name
|
|
LPCTSTR lpszTemplate; // Customized template name
|
|
HRSRC hResource; // Customized template handle
|
|
|
|
// Specifics for OLEUIINSERTOBJECT.
|
|
CLSID clsid; // OUT: Return space for class ID
|
|
LPTSTR lpszFile; // IN-OUT: Filename for inserts or links
|
|
UINT cchFile; // IN: Size of lpszFile buffer: MAX_PATH
|
|
UINT cClsidExclude; // IN: CLSIDs in lpClsidExclude
|
|
LPCLSID lpClsidExclude; // IN: List of CLSIDs to exclude from listing.
|
|
|
|
// Specific to create objects if flags say so
|
|
IID iid; // IN: Requested interface on creation.
|
|
DWORD oleRender; // IN: Rendering option
|
|
LPFORMATETC lpFormatEtc; // IN: Desired format
|
|
LPOLECLIENTSITE lpIOleClientSite; // IN: Site to be use for the object.
|
|
LPSTORAGE lpIStorage; // OUT: Storage used for the object
|
|
LPVOID FAR *ppvObj; // OUT: Where the object is returned.
|
|
SCODE sc; // OUT: Result of creation calls.
|
|
HGLOBAL hMetaPict; // OUT: metafile aspect (METAFILEPICT)
|
|
|
|
} OLEUIINSERTOBJECT, *POLEUIINSERTOBJECT, FAR *LPOLEUIINSERTOBJECT;
|
|
|
|
STDAPI_(UINT) OleUIInsertObject(LPOLEUIINSERTOBJECT);
|
|
|
|
// Insert Object flags
|
|
#define IOF_SHOWHELP 0x00000001L
|
|
#define IOF_SELECTCREATENEW 0x00000002L
|
|
#define IOF_SELECTCREATEFROMFILE 0x00000004L
|
|
#define IOF_CHECKLINK 0x00000008L
|
|
#define IOF_CHECKDISPLAYASICON 0x00000010L
|
|
#define IOF_CREATENEWOBJECT 0x00000020L
|
|
#define IOF_CREATEFILEOBJECT 0x00000040L
|
|
#define IOF_CREATELINKOBJECT 0x00000080L
|
|
#define IOF_DISABLELINK 0x00000100L
|
|
#define IOF_VERIFYSERVERSEXIST 0x00000200L
|
|
#define IOF_DISABLEDISPLAYASICON 0x00000400L
|
|
#define IOF_HIDECHANGEICON 0x00000800L
|
|
#define IOF_SHOWINSERTCONTROL 0x00001000L
|
|
#define IOF_SELECTCREATECONTROL 0x00002000L
|
|
|
|
// Insert Object specific error codes
|
|
#define OLEUI_IOERR_LPSZFILEINVALID (OLEUI_ERR_STANDARDMAX+0)
|
|
#define OLEUI_IOERR_LPSZLABELINVALID (OLEUI_ERR_STANDARDMAX+1)
|
|
#define OLEUI_IOERR_HICONINVALID (OLEUI_ERR_STANDARDMAX+2)
|
|
#define OLEUI_IOERR_LPFORMATETCINVALID (OLEUI_ERR_STANDARDMAX+3)
|
|
#define OLEUI_IOERR_PPVOBJINVALID (OLEUI_ERR_STANDARDMAX+4)
|
|
#define OLEUI_IOERR_LPIOLECLIENTSITEINVALID (OLEUI_ERR_STANDARDMAX+5)
|
|
#define OLEUI_IOERR_LPISTORAGEINVALID (OLEUI_ERR_STANDARDMAX+6)
|
|
#define OLEUI_IOERR_SCODEHASERROR (OLEUI_ERR_STANDARDMAX+7)
|
|
#define OLEUI_IOERR_LPCLSIDEXCLUDEINVALID (OLEUI_ERR_STANDARDMAX+8)
|
|
#define OLEUI_IOERR_CCHFILEINVALID (OLEUI_ERR_STANDARDMAX+9)
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// PASTE SPECIAL DIALOG
|
|
|
|
// The OLEUIPASTEFLAG enumeration is used by the OLEUIPASTEENTRY structure.
|
|
//
|
|
// OLEUIPASTE_ENABLEICON: If the container does not specify this flag for
|
|
// the entry in the OLEUIPASTEENTRY array passed as input to
|
|
// OleUIPasteSpecial, the DisplayAsIcon button will be unchecked and
|
|
// disabled when the the user selects the format that corresponds to
|
|
// the entry.
|
|
//
|
|
// OLEUIPASTE_PASTEONLY: Indicates that the entry in the OLEUIPASTEENTRY
|
|
// array is valid for pasting only.
|
|
//
|
|
// OLEUIPASTE_PASTE: Indicates that the entry in the OLEUIPASTEENTRY array
|
|
// is valid for pasting. It may also be valid for linking if any of
|
|
// the following linking flags are specified.
|
|
//
|
|
// If the entry in the OLEUIPASTEENTRY array is valid for linking, the
|
|
// following flags indicate which link types are acceptable by OR'ing
|
|
// together the appropriate OLEUIPASTE_LINKTYPE<#> values.
|
|
//
|
|
// These values correspond as follows to the array of link types passed to
|
|
// OleUIPasteSpecial:
|
|
//
|
|
// OLEUIPASTE_LINKTYPE1 = arrLinkTypes[0]
|
|
// OLEUIPASTE_LINKTYPE2 = arrLinkTypes[1]
|
|
// OLEUIPASTE_LINKTYPE3 = arrLinkTypes[2]
|
|
// OLEUIPASTE_LINKTYPE4 = arrLinkTypes[3]
|
|
// OLEUIPASTE_LINKTYPE5 = arrLinkTypes[4]
|
|
// OLEUIPASTE_LINKTYPE6 = arrLinkTypes[5]
|
|
// OLEUIPASTE_LINKTYPE7 = arrLinkTypes[6]
|
|
// OLEUIPASTE_LINKTYPE8 = arrLinkTypes[7]
|
|
//
|
|
// where,
|
|
// UINT arrLinkTypes[8] is an array of registered clipboard formats for
|
|
// linking. A maximium of 8 link types are allowed.
|
|
|
|
typedef enum tagOLEUIPASTEFLAG
|
|
{
|
|
OLEUIPASTE_ENABLEICON = 2048, // enable display as icon
|
|
OLEUIPASTE_PASTEONLY = 0,
|
|
OLEUIPASTE_PASTE = 512,
|
|
OLEUIPASTE_LINKANYTYPE = 1024,
|
|
OLEUIPASTE_LINKTYPE1 = 1,
|
|
OLEUIPASTE_LINKTYPE2 = 2,
|
|
OLEUIPASTE_LINKTYPE3 = 4,
|
|
OLEUIPASTE_LINKTYPE4 = 8,
|
|
OLEUIPASTE_LINKTYPE5 = 16,
|
|
OLEUIPASTE_LINKTYPE6 = 32,
|
|
OLEUIPASTE_LINKTYPE7 = 64,
|
|
OLEUIPASTE_LINKTYPE8 = 128
|
|
} OLEUIPASTEFLAG;
|
|
|
|
// OLEUIPASTEENTRY structure
|
|
//
|
|
// An array of OLEUIPASTEENTRY entries is specified for the PasteSpecial
|
|
// dialog box. Each entry includes a FORMATETC which specifies the
|
|
// formats that are acceptable, a string that is to represent the format
|
|
// in the dialog's list box, a string to customize the result text of the
|
|
// dialog and a set of flags from the OLEUIPASTEFLAG enumeration. The
|
|
// flags indicate if the entry is valid for pasting only, linking only or
|
|
// both pasting and linking.
|
|
|
|
typedef struct tagOLEUIPASTEENTRY
|
|
{
|
|
FORMATETC fmtetc; // Format that is acceptable.
|
|
LPCTSTR lpstrFormatName;// String that represents the format
|
|
// to the user. %s is replaced by the
|
|
// full user type name of the object.
|
|
LPCTSTR lpstrResultText;// String to customize the result text
|
|
// of the dialog when the user
|
|
// selects the format correspoding to
|
|
// this entry. Any %s in this string
|
|
// is replaced by the the application
|
|
// name or FullUserTypeName of the
|
|
// object on the clipboard.
|
|
DWORD dwFlags; // Values from OLEUIPASTEFLAG enum
|
|
DWORD dwScratchSpace; // Scratch space used internally.
|
|
|
|
} OLEUIPASTEENTRY, *POLEUIPASTEENTRY, FAR *LPOLEUIPASTEENTRY;
|
|
|
|
// Maximum number of link types
|
|
#define PS_MAXLINKTYPES 8
|
|
|
|
typedef struct tagOLEUIPASTESPECIAL
|
|
{
|
|
// These IN fields are standard across all OLEUI dialog functions.
|
|
DWORD cbStruct; // Structure Size
|
|
DWORD dwFlags; // IN-OUT: Flags
|
|
HWND hWndOwner; // Owning window
|
|
LPCTSTR lpszCaption; // Dialog caption bar contents
|
|
LPFNOLEUIHOOK lpfnHook; // Hook callback
|
|
LPARAM lCustData; // Custom data to pass to hook
|
|
HINSTANCE hInstance; // Instance for customized template name
|
|
LPCTSTR lpszTemplate; // Customized template name
|
|
HRSRC hResource; // Customized template handle
|
|
|
|
// Specifics for OLEUIPASTESPECIAL.
|
|
LPDATAOBJECT lpSrcDataObj; // IN-OUT: Source IDataObject* on the clipboard
|
|
LPOLEUIPASTEENTRY arrPasteEntries;// IN: Array of acceptable formats
|
|
int cPasteEntries; // IN: No. of OLEUIPASTEENTRY array entries
|
|
UINT FAR* arrLinkTypes; // IN: List of acceptable link types
|
|
int cLinkTypes; // IN: Number of link types
|
|
UINT cClsidExclude; // IN: Number of CLSIDs in lpClsidExclude
|
|
LPCLSID lpClsidExclude; // IN: List of CLSIDs to exclude from list.
|
|
int nSelectedIndex; // OUT: Index that the user selected
|
|
BOOL fLink; // OUT: Indicates if Paste or PasteLink
|
|
HGLOBAL hMetaPict; // OUT: Handle to Metafile containing icon
|
|
SIZEL sizel; // OUT: size of object/link in its source
|
|
// may be 0,0 if different display
|
|
// aspect is chosen.
|
|
|
|
} OLEUIPASTESPECIAL, *POLEUIPASTESPECIAL, FAR *LPOLEUIPASTESPECIAL;
|
|
|
|
STDAPI_(UINT) OleUIPasteSpecial(LPOLEUIPASTESPECIAL);
|
|
|
|
// Paste Special specific flags
|
|
#define PSF_SHOWHELP 0x00000001L
|
|
#define PSF_SELECTPASTE 0x00000002L
|
|
#define PSF_SELECTPASTELINK 0x00000004L
|
|
#define PSF_CHECKDISPLAYASICON 0x00000008L
|
|
#define PSF_DISABLEDISPLAYASICON 0x00000010L
|
|
#define PSF_HIDECHANGEICON 0x00000020L
|
|
#define PSF_STAYONCLIPBOARDCHANGE 0x00000040L
|
|
#define PSF_NOREFRESHDATAOBJECT 0x00000080L
|
|
|
|
// Paste Special specific error codes
|
|
#define OLEUI_IOERR_SRCDATAOBJECTINVALID (OLEUI_ERR_STANDARDMAX+0)
|
|
#define OLEUI_IOERR_ARRPASTEENTRIESINVALID (OLEUI_ERR_STANDARDMAX+1)
|
|
#define OLEUI_IOERR_ARRLINKTYPESINVALID (OLEUI_ERR_STANDARDMAX+2)
|
|
#define OLEUI_PSERR_CLIPBOARDCHANGED (OLEUI_ERR_STANDARDMAX+3)
|
|
#define OLEUI_PSERR_GETCLIPBOARDFAILED (OLEUI_ERR_STANDARDMAX+4)
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// EDIT LINKS DIALOG
|
|
|
|
// IOleUILinkContainer interface
|
|
//
|
|
// This interface must be implemented by container applications that
|
|
// want to use the EditLinks dialog. the EditLinks dialog calls back
|
|
// to the container app to perform the OLE functions to manipulate
|
|
// the links within the container.
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IOleUILinkContainer
|
|
|
|
DECLARE_INTERFACE_(IOleUILinkContainer, IUnknown)
|
|
{
|
|
// *** IUnknown methods *** //
|
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
|
|
|
// *** IOleUILinkContainer *** //
|
|
STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD dwLink) PURE;
|
|
STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD dwLink,
|
|
DWORD dwUpdateOpt) PURE;
|
|
STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD dwLink,
|
|
DWORD FAR* lpdwUpdateOpt) PURE;
|
|
STDMETHOD(SetLinkSource) (THIS_ DWORD dwLink, LPTSTR lpszDisplayName,
|
|
ULONG lenFileName, ULONG FAR* pchEaten, BOOL fValidateSource) PURE;
|
|
STDMETHOD(GetLinkSource) (THIS_ DWORD dwLink,
|
|
LPTSTR FAR* lplpszDisplayName, ULONG FAR* lplenFileName,
|
|
LPTSTR FAR* lplpszFullLinkType, LPTSTR FAR* lplpszShortLinkType,
|
|
BOOL FAR* lpfSourceAvailable, BOOL FAR* lpfIsSelected) PURE;
|
|
STDMETHOD(OpenLinkSource) (THIS_ DWORD dwLink) PURE;
|
|
STDMETHOD(UpdateLink) (THIS_ DWORD dwLink,
|
|
BOOL fErrorMessage, BOOL fErrorAction) PURE;
|
|
STDMETHOD(CancelLink) (THIS_ DWORD dwLink) PURE;
|
|
};
|
|
|
|
typedef IOleUILinkContainer FAR* LPOLEUILINKCONTAINER;
|
|
|
|
typedef struct tagOLEUIEDITLINKS
|
|
{
|
|
// These IN fields are standard across all OLEUI dialog functions.
|
|
DWORD cbStruct; // Structure Size
|
|
DWORD dwFlags; // IN-OUT: Flags
|
|
HWND hWndOwner; // Owning window
|
|
LPCTSTR lpszCaption; // Dialog caption bar contents
|
|
LPFNOLEUIHOOK lpfnHook; // Hook callback
|
|
LPARAM lCustData; // Custom data to pass to hook
|
|
HINSTANCE hInstance; // Instance for customized template name
|
|
LPCTSTR lpszTemplate; // Customized template name
|
|
HRSRC hResource; // Customized template handle
|
|
|
|
// Specifics for OLEUIEDITLINKS.
|
|
LPOLEUILINKCONTAINER lpOleUILinkContainer; // IN: Interface to manipulate
|
|
// links in the container
|
|
|
|
} OLEUIEDITLINKS, *POLEUIEDITLINKS, FAR *LPOLEUIEDITLINKS;
|
|
|
|
STDAPI_(UINT) OleUIEditLinks(LPOLEUIEDITLINKS);
|
|
|
|
// Edit Links flags
|
|
#define ELF_SHOWHELP 0x00000001L
|
|
#define ELF_DISABLEUPDATENOW 0x00000002L
|
|
#define ELF_DISABLEOPENSOURCE 0x00000004L
|
|
#define ELF_DISABLECHANGESOURCE 0x00000008L
|
|
#define ELF_DISABLECANCELLINK 0x00000010L
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CHANGE ICON DIALOG
|
|
|
|
typedef struct tagOLEUICHANGEICON
|
|
{
|
|
// These IN fields are standard across all OLEUI dialog functions.
|
|
DWORD cbStruct; // Structure Size
|
|
DWORD dwFlags; // IN-OUT: Flags
|
|
HWND hWndOwner; // Owning window
|
|
LPCTSTR lpszCaption; // Dialog caption bar contents
|
|
LPFNOLEUIHOOK lpfnHook; // Hook callback
|
|
LPARAM lCustData; // Custom data to pass to hook
|
|
HINSTANCE hInstance; // Instance for customized template name
|
|
LPCTSTR lpszTemplate; // Customized template name
|
|
HRSRC hResource; // Customized template handle
|
|
|
|
// Specifics for OLEUICHANGEICON.
|
|
HGLOBAL hMetaPict; // IN-OUT: Current and final image.
|
|
// Source of the icon is embedded in
|
|
// the metafile itself.
|
|
CLSID clsid; // IN: class used to get Default icon
|
|
TCHAR szIconExe[MAX_PATH]; // IN: exlicit icon source path
|
|
int cchIconExe; // IN: number of characters in szIconExe
|
|
|
|
} OLEUICHANGEICON, *POLEUICHANGEICON, FAR *LPOLEUICHANGEICON;
|
|
|
|
STDAPI_(UINT) OleUIChangeIcon(LPOLEUICHANGEICON);
|
|
|
|
// Change Icon flags
|
|
#define CIF_SHOWHELP 0x00000001L
|
|
#define CIF_SELECTCURRENT 0x00000002L
|
|
#define CIF_SELECTDEFAULT 0x00000004L
|
|
#define CIF_SELECTFROMFILE 0x00000008L
|
|
#define CIF_USEICONEXE 0x00000010L
|
|
|
|
// Change Icon specific error codes
|
|
#define OLEUI_CIERR_MUSTHAVECLSID (OLEUI_ERR_STANDARDMAX+0)
|
|
#define OLEUI_CIERR_MUSTHAVECURRENTMETAFILE (OLEUI_ERR_STANDARDMAX+1)
|
|
#define OLEUI_CIERR_SZICONEXEINVALID (OLEUI_ERR_STANDARDMAX+2)
|
|
|
|
// Property used by ChangeIcon dialog to give its parent window access to
|
|
// its hDlg. The PasteSpecial dialog may need to force the ChgIcon dialog
|
|
// down if the clipboard contents change underneath it. if so it will send
|
|
// a IDCANCEL command to the ChangeIcon dialog.
|
|
#define PROP_HWND_CHGICONDLG TEXT("HWND_CIDLG")
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CONVERT DIALOG
|
|
|
|
typedef struct tagOLEUICONVERT
|
|
{
|
|
// These IN fields are standard across all OLEUI dialog functions.
|
|
DWORD cbStruct; // Structure Size
|
|
DWORD dwFlags; // IN-OUT: Flags
|
|
HWND hWndOwner; // Owning window
|
|
LPCTSTR lpszCaption; // Dialog caption bar contents
|
|
LPFNOLEUIHOOK lpfnHook; // Hook callback
|
|
LPARAM lCustData; // Custom data to pass to hook
|
|
HINSTANCE hInstance; // Instance for customized template name
|
|
LPCTSTR lpszTemplate; // Customized template name
|
|
HRSRC hResource; // Customized template handle
|
|
|
|
// Specifics for OLEUICONVERT.
|
|
CLSID clsid; // IN: Class ID sent in to dialog: IN only
|
|
CLSID clsidConvertDefault; // IN: use as convert default: IN only
|
|
CLSID clsidActivateDefault; // IN: use as activate default: IN only
|
|
|
|
CLSID clsidNew; // OUT: Selected Class ID
|
|
DWORD dvAspect; // IN-OUT: either DVASPECT_CONTENT or
|
|
// DVASPECT_ICON
|
|
WORD wFormat; // IN" Original data format
|
|
BOOL fIsLinkedObject;// IN: true if object is linked
|
|
HGLOBAL hMetaPict; // IN-OUT: metafile icon image
|
|
LPTSTR lpszUserType; // IN-OUT: user type name of original class.
|
|
// We'll do lookup if NULL.
|
|
// This gets freed on exit.
|
|
BOOL fObjectsIconChanged; // OUT: TRUE == ChangeIcon was called
|
|
LPTSTR lpszDefLabel; //IN-OUT: default label to use for icon.
|
|
// if NULL, the short user type name
|
|
// will be used. if the object is a
|
|
// link, the caller should pass the
|
|
// DisplayName of the link source
|
|
// This gets freed on exit.
|
|
|
|
UINT cClsidExclude; //IN: No. of CLSIDs in lpClsidExclude
|
|
LPCLSID lpClsidExclude; //IN: List of CLSIDs to exclude from list
|
|
|
|
} OLEUICONVERT, *POLEUICONVERT, FAR *LPOLEUICONVERT;
|
|
|
|
STDAPI_(UINT) OleUIConvert(LPOLEUICONVERT);
|
|
|
|
// Determine if there is at least one class that can Convert or ActivateAs
|
|
// the given clsid.
|
|
STDAPI_(BOOL) OleUICanConvertOrActivateAs(
|
|
REFCLSID rClsid, BOOL fIsLinkedObject, WORD wFormat);
|
|
|
|
// Convert Dialog flags
|
|
#define CF_SHOWHELPBUTTON 0x00000001L
|
|
#define CF_SETCONVERTDEFAULT 0x00000002L
|
|
#define CF_SETACTIVATEDEFAULT 0x00000004L
|
|
#define CF_SELECTCONVERTTO 0x00000008L
|
|
#define CF_SELECTACTIVATEAS 0x00000010L
|
|
#define CF_DISABLEDISPLAYASICON 0x00000020L
|
|
#define CF_DISABLEACTIVATEAS 0x00000040L
|
|
#define CF_HIDECHANGEICON 0x00000080L
|
|
#define CF_CONVERTONLY 0x00000100L
|
|
|
|
// Convert specific error codes
|
|
#define OLEUI_CTERR_CLASSIDINVALID (OLEUI_ERR_STANDARDMAX+1)
|
|
#define OLEUI_CTERR_DVASPECTINVALID (OLEUI_ERR_STANDARDMAX+2)
|
|
#define OLEUI_CTERR_CBFORMATINVALID (OLEUI_ERR_STANDARDMAX+3)
|
|
#define OLEUI_CTERR_HMETAPICTINVALID (OLEUI_ERR_STANDARDMAX+4)
|
|
#define OLEUI_CTERR_STRINGINVALID (OLEUI_ERR_STANDARDMAX+5)
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// BUSY DIALOG
|
|
|
|
typedef struct tagOLEUIBUSY
|
|
{
|
|
// These IN fields are standard across all OLEUI dialog functions.
|
|
DWORD cbStruct; // Structure Size
|
|
DWORD dwFlags; // IN-OUT: see below
|
|
HWND hWndOwner; // Owning window
|
|
LPCTSTR lpszCaption; // Dialog caption bar contents
|
|
LPFNOLEUIHOOK lpfnHook; // Hook callback
|
|
LPARAM lCustData; // Custom data to pass to hook
|
|
HINSTANCE hInstance; // Instance for customized template name
|
|
LPCTSTR lpszTemplate; // Customized template name
|
|
HRSRC hResource; // Customized template handle
|
|
|
|
// Specifics for OLEUIBUSY.
|
|
HTASK hTask; // IN: HTask which is blocking
|
|
HWND FAR * lphWndDialog; // IN: Dialog's HWND is placed here
|
|
|
|
} OLEUIBUSY, *POLEUIBUSY, FAR *LPOLEUIBUSY;
|
|
|
|
STDAPI_(UINT) OleUIBusy(LPOLEUIBUSY);
|
|
|
|
// Flags for the Busy dialog
|
|
#define BZ_DISABLECANCELBUTTON 0x00000001L
|
|
#define BZ_DISABLESWITCHTOBUTTON 0x00000002L
|
|
#define BZ_DISABLERETRYBUTTON 0x00000004L
|
|
|
|
#define BZ_NOTRESPONDINGDIALOG 0x00000008L
|
|
|
|
// Busy specific error/return codes
|
|
#define OLEUI_BZERR_HTASKINVALID (OLEUI_ERR_STANDARDMAX+0)
|
|
#define OLEUI_BZ_SWITCHTOSELECTED (OLEUI_ERR_STANDARDMAX+1)
|
|
#define OLEUI_BZ_RETRYSELECTED (OLEUI_ERR_STANDARDMAX+2)
|
|
#define OLEUI_BZ_CALLUNBLOCKED (OLEUI_ERR_STANDARDMAX+3)
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CHANGE SOURCE DIALOG
|
|
|
|
// Data to and from the ChangeSource dialog hook
|
|
typedef struct tagOLEUICHANGESOURCE
|
|
{
|
|
// These IN fields are standard across all OLEUI dialog functions.
|
|
DWORD cbStruct; // Structure Size
|
|
DWORD dwFlags; // IN-OUT: Flags
|
|
HWND hWndOwner; // Owning window
|
|
LPCTSTR lpszCaption; // Dialog caption bar contents
|
|
LPFNOLEUIHOOK lpfnHook; // Hook callback
|
|
LPARAM lCustData; // Custom data to pass to hook
|
|
HINSTANCE hInstance; // Instance for customized template name
|
|
LPCTSTR lpszTemplate; // Customized template name
|
|
HRSRC hResource; // Customized template handle
|
|
|
|
// INTERNAL ONLY: do not modify these members
|
|
OPENFILENAME* lpOFN; // pointer OPENFILENAME struct
|
|
DWORD dwReserved1[4]; // (reserved for future use)
|
|
|
|
// Specifics for OLEUICHANGESOURCE.
|
|
LPOLEUILINKCONTAINER lpOleUILinkContainer; // IN: used to validate link sources
|
|
DWORD dwLink; // IN: magic# for lpOleUILinkContainer
|
|
LPTSTR lpszDisplayName;// IN-OUT: complete source display name
|
|
ULONG nFileLength; // IN-OUT: file moniker part of lpszSource
|
|
LPTSTR lpszFrom; // OUT: prefix of source changed from
|
|
LPTSTR lpszTo; // OUT: prefix of source changed to
|
|
|
|
} OLEUICHANGESOURCE, *POLEUICHANGESOURCE, FAR *LPOLEUICHANGESOURCE;
|
|
|
|
STDAPI_(UINT) OleUIChangeSource(LPOLEUICHANGESOURCE);
|
|
|
|
// Change Source Dialog flags
|
|
#define CSF_SHOWHELP 0x00000001L // IN: enable/show help button
|
|
#define CSF_VALIDSOURCE 0x00000002L // OUT: link was validated
|
|
#define CSF_ONLYGETSOURCE 0x00000004L // OUT: don't actually set it
|
|
|
|
// Change Source Dialog errors
|
|
#define OLEUI_CSERR_LINKCNTRNULL (OLEUI_ERR_STANDARDMAX+0)
|
|
#define OLEUI_CSERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+1)
|
|
#define OLEUI_CSERR_FROMNOTNULL (OLEUI_ERR_STANDARDMAX+2)
|
|
#define OLEUI_CSERR_TONOTNULL (OLEUI_ERR_STANDARDMAX+3)
|
|
#define OLEUI_CSERR_SOURCENULL (OLEUI_ERR_STANDARDMAX+4)
|
|
#define OLEUI_CSERR_SOURCEINVALID (OLEUI_ERR_STANDARDMAX+5)
|
|
#define OLEUI_CSERR_SOURCEPARSERROR (OLEUI_ERR_STANDARDMAX+6)
|
|
#define OLEUI_CSERR_SOURCEPARSEERROR (OLEUI_ERR_STANDARDMAX+7)
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// OBJECT PROPERTIES DIALOG
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IOleUIObjInfo
|
|
|
|
DECLARE_INTERFACE_(IOleUIObjInfo, IUnknown)
|
|
{
|
|
// *** IUnknown methods *** //
|
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
|
|
|
// *** extra for General Properties *** //
|
|
STDMETHOD(GetObjectInfo) (THIS_ DWORD dwObject,
|
|
DWORD FAR* lpdwObjSize, LPTSTR FAR* lplpszLabel,
|
|
LPTSTR FAR* lplpszType, LPTSTR FAR* lplpszShortType,
|
|
LPTSTR FAR* lplpszLocation) PURE;
|
|
STDMETHOD(GetConvertInfo) (THIS_ DWORD dwObject,
|
|
CLSID FAR* lpClassID, WORD FAR* lpwFormat,
|
|
CLSID FAR* lpConvertDefaultClassID,
|
|
LPCLSID FAR* lplpClsidExclude, UINT FAR* lpcClsidExclude) PURE;
|
|
STDMETHOD(ConvertObject) (THIS_ DWORD dwObject, REFCLSID clsidNew) PURE;
|
|
|
|
// *** extra for View Properties *** //
|
|
STDMETHOD(GetViewInfo) (THIS_ DWORD dwObject,
|
|
HGLOBAL FAR* phMetaPict, DWORD* pdvAspect, int* pnCurrentScale) PURE;
|
|
STDMETHOD(SetViewInfo) (THIS_ DWORD dwObject,
|
|
HGLOBAL hMetaPict, DWORD dvAspect,
|
|
int nCurrentScale, BOOL bRelativeToOrig) PURE;
|
|
};
|
|
|
|
typedef IOleUIObjInfo FAR* LPOLEUIOBJINFO;
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IOleUILinkInfo
|
|
|
|
DECLARE_INTERFACE_(IOleUILinkInfo, IOleUILinkContainer)
|
|
{
|
|
// *** IUnknown methods *** //
|
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
|
|
|
// *** IOleUILinkContainer *** //
|
|
STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD dwLink) PURE;
|
|
STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD dwLink,
|
|
DWORD dwUpdateOpt) PURE;
|
|
STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD dwLink,
|
|
DWORD FAR* lpdwUpdateOpt) PURE;
|
|
STDMETHOD(SetLinkSource) (THIS_ DWORD dwLink, LPTSTR lpszDisplayName,
|
|
ULONG lenFileName, ULONG FAR* pchEaten, BOOL fValidateSource) PURE;
|
|
STDMETHOD(GetLinkSource) (THIS_ DWORD dwLink,
|
|
LPTSTR FAR* lplpszDisplayName, ULONG FAR* lplenFileName,
|
|
LPTSTR FAR* lplpszFullLinkType, LPTSTR FAR* lplpszShortLinkType,
|
|
BOOL FAR* lpfSourceAvailable, BOOL FAR* lpfIsSelected) PURE;
|
|
STDMETHOD(OpenLinkSource) (THIS_ DWORD dwLink) PURE;
|
|
STDMETHOD(UpdateLink) (THIS_ DWORD dwLink,
|
|
BOOL fErrorMessage, BOOL fErrorAction) PURE;
|
|
STDMETHOD(CancelLink) (THIS_ DWORD dwLink) PURE;
|
|
|
|
// *** extra for Link Properties *** //
|
|
STDMETHOD(GetLastUpdate) (THIS_ DWORD dwLink,
|
|
FILETIME FAR* lpLastUpdate) PURE;
|
|
};
|
|
|
|
typedef IOleUILinkInfo FAR* LPOLEUILINKINFO;
|
|
|
|
struct tagOLEUIOBJECTPROPS;
|
|
|
|
typedef struct tagOLEUIGNRLPROPS
|
|
{
|
|
// These IN fields are standard across all OLEUI property pages.
|
|
DWORD cbStruct; // Structure Size
|
|
DWORD dwFlags; // IN-OUT: flags specific to general page
|
|
DWORD dwReserved1[2];
|
|
LPFNOLEUIHOOK lpfnHook; // Hook callback
|
|
LPARAM lCustData; // Custom data to pass to hook
|
|
DWORD dwReserved2[3];
|
|
|
|
struct tagOLEUIOBJECTPROPS* lpOP; // (used internally)
|
|
|
|
} OLEUIGNRLPROPS, *POLEUIGNRLPROPS, FAR* LPOLEUIGNRLPROPS;
|
|
|
|
typedef struct tagOLEUIVIEWPROPS
|
|
{
|
|
// These IN fields are standard across all OLEUI property pages.
|
|
DWORD cbStruct; // Structure Size
|
|
DWORD dwFlags; // IN-OUT: flags specific to view page
|
|
DWORD dwReserved1[2];
|
|
LPFNOLEUIHOOK lpfnHook; // Hook callback (not used in this dialog)
|
|
LPARAM lCustData; // Custom data to pass to hook
|
|
DWORD dwReserved2[3];
|
|
|
|
struct tagOLEUIOBJECTPROPS* lpOP; // (used internally)
|
|
|
|
int nScaleMin; // scale range
|
|
int nScaleMax;
|
|
|
|
} OLEUIVIEWPROPS, *POLEUIVIEWPROPS, FAR* LPOLEUIVIEWPROPS;
|
|
|
|
// Flags for OLEUIVIEWPROPS
|
|
#define VPF_SELECTRELATIVE 0x00000001L // IN: relative to orig
|
|
#define VPF_DISABLERELATIVE 0x00000002L // IN: disable relative to orig
|
|
#define VPF_DISABLESCALE 0x00000004L // IN: disable scale option
|
|
|
|
typedef struct tagOLEUILINKPROPS
|
|
{
|
|
// These IN fields are standard across all OLEUI property pages.
|
|
DWORD cbStruct; // Structure Size
|
|
DWORD dwFlags; // IN-OUT: flags specific to links page
|
|
DWORD dwReserved1[2];
|
|
LPFNOLEUIHOOK lpfnHook; // Hook callback (not used in this dialog)
|
|
LPARAM lCustData; // Custom data to pass to hook
|
|
DWORD dwReserved2[3];
|
|
|
|
struct tagOLEUIOBJECTPROPS* lpOP; // (used internally)
|
|
|
|
} OLEUILINKPROPS, *POLEUILINKPROPS, FAR* LPOLEUILINKPROPS;
|
|
|
|
#ifndef UNICODE
|
|
typedef struct _PROPSHEETHEADERA FAR* LPPROPSHEETHEADERA;
|
|
#define LPPROPSHEETHEADER LPPROPSHEETHEADERA
|
|
#else
|
|
typedef struct _PROPSHEETHEADERW FAR* LPPROPSHEETHEADERW;
|
|
#define LPPROPSHEETHEADER LPPROPSHEETHEADERW
|
|
#endif
|
|
|
|
typedef struct tagOLEUIOBJECTPROPS
|
|
{
|
|
// These IN fields are standard across all OLEUI property sheets.
|
|
DWORD cbStruct; // Structure Size
|
|
DWORD dwFlags; // IN-OUT: global flags for the sheet
|
|
|
|
// Standard PROPSHEETHEADER used for extensibility
|
|
LPPROPSHEETHEADER lpPS; // IN: property sheet header
|
|
|
|
// Data which allows manipulation of the object
|
|
DWORD dwObject; // IN: identifier for the object
|
|
LPOLEUIOBJINFO lpObjInfo; // IN: interface to manipulate object
|
|
|
|
// Data which allows manipulation of the link
|
|
DWORD dwLink; // IN: identifier for the link
|
|
LPOLEUILINKINFO lpLinkInfo; // IN: interface to manipulate link
|
|
|
|
// Data specfic to each page
|
|
LPOLEUIGNRLPROPS lpGP; // IN: general page
|
|
LPOLEUIVIEWPROPS lpVP; // IN: view page
|
|
LPOLEUILINKPROPS lpLP; // IN: link page
|
|
|
|
} OLEUIOBJECTPROPS, *POLEUIOBJECTPROPS, FAR* LPOLEUIOBJECTPROPS;
|
|
|
|
STDAPI_(UINT) OleUIObjectProperties(LPOLEUIOBJECTPROPS);
|
|
|
|
// Flags for OLEUIOBJECTPROPS
|
|
#define OPF_OBJECTISLINK 0x00000001L
|
|
#define OPF_NOFILLDEFAULT 0x00000002L
|
|
#define OPF_SHOWHELP 0x00000004L
|
|
#define OPF_DISABLECONVERT 0x00000008L
|
|
|
|
// Errors for OleUIObjectProperties
|
|
#define OLEUI_OPERR_SUBPROPNULL (OLEUI_ERR_STANDARDMAX+0)
|
|
#define OLEUI_OPERR_SUBPROPINVALID (OLEUI_ERR_STANDARDMAX+1)
|
|
#define OLEUI_OPERR_PROPSHEETNULL (OLEUI_ERR_STANDARDMAX+2)
|
|
#define OLEUI_OPERR_PROPSHEETINVALID (OLEUI_ERR_STANDARDMAX+3)
|
|
#define OLEUI_OPERR_SUPPROP (OLEUI_ERR_STANDARDMAX+4)
|
|
#define OLEUI_OPERR_PROPSINVALID (OLEUI_ERR_STANDARDMAX+5)
|
|
#define OLEUI_OPERR_PAGESINCORRECT (OLEUI_ERR_STANDARDMAX+6)
|
|
#define OLEUI_OPERR_INVALIDPAGES (OLEUI_ERR_STANDARDMAX+7)
|
|
#define OLEUI_OPERR_NOTSUPPORTED (OLEUI_ERR_STANDARDMAX+8)
|
|
#define OLEUI_OPERR_DLGPROCNOTNULL (OLEUI_ERR_STANDARDMAX+9)
|
|
#define OLEUI_OPERR_LPARAMNOTZERO (OLEUI_ERR_STANDARDMAX+18)
|
|
|
|
#define OLEUI_GPERR_STRINGINVALID (OLEUI_ERR_STANDARDMAX+11)
|
|
#define OLEUI_GPERR_CLASSIDINVALID (OLEUI_ERR_STANDARDMAX+12)
|
|
#define OLEUI_GPERR_LPCLSIDEXCLUDEINVALID (OLEUI_ERR_STANDARDMAX+13)
|
|
#define OLEUI_GPERR_CBFORMATINVALID (OLEUI_ERR_STANDARDMAX+14)
|
|
#define OLEUI_VPERR_METAPICTINVALID (OLEUI_ERR_STANDARDMAX+15)
|
|
#define OLEUI_VPERR_DVASPECTINVALID (OLEUI_ERR_STANDARDMAX+16)
|
|
#define OLEUI_LPERR_LINKCNTRNULL (OLEUI_ERR_STANDARDMAX+17)
|
|
#define OLEUI_LPERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+18)
|
|
|
|
#define OLEUI_OPERR_PROPERTYSHEET (OLEUI_ERR_STANDARDMAX+19)
|
|
|
|
// wParam used by PSM_QUERYSIBLINGS
|
|
#define OLEUI_QUERY_GETCLASSID 0xFF00 // override class id for icon
|
|
#define OLEUI_QUERY_LINKBROKEN 0xFF01 // after link broken
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// PROMPT USER DIALOGS
|
|
|
|
int EXPORT FAR CDECL OleUIPromptUser(int nTemplate, HWND hwndParent, ...);
|
|
|
|
STDAPI_(BOOL) OleUIUpdateLinks(LPOLEUILINKCONTAINER lpOleUILinkCntr,
|
|
HWND hwndParent, LPTSTR lpszTitle, int cLinks);
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#pragma pack(pop)
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif //_OLE2UI_H_
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|