196 lines
7.7 KiB
C
196 lines
7.7 KiB
C
#ifndef _IDLCOMM_H_
|
|
#define _IDLCOMM_H_
|
|
|
|
#ifndef _SHELLP_H_
|
|
#include <shellp.h>
|
|
#endif
|
|
|
|
//===========================================================================
|
|
// HIDA -- IDList Array handle
|
|
//===========================================================================
|
|
|
|
STDAPI_(void) IDLData_InitializeClipboardFormats(void);
|
|
|
|
STDAPI_(LPITEMIDLIST) HIDA_ILClone(HIDA hida, UINT i);
|
|
STDAPI_(LPITEMIDLIST) HIDA_FillIDList(HIDA hida, UINT i, LPITEMIDLIST pidl);
|
|
|
|
#define DTID_HDROP 0x00000001L
|
|
#define DTID_HIDA 0x00000002L
|
|
#define DTID_NETRES 0x00000004L
|
|
#define DTID_CONTENTS 0x00000008L
|
|
#define DTID_FDESCA 0x00000010L
|
|
#define DTID_OLEOBJ 0x00000020L
|
|
#define DTID_OLELINK 0x00000040L
|
|
#define DTID_FD_LINKUI 0x00000080L
|
|
#define DTID_FDESCW 0x00000100L
|
|
#define DTID_PREFERREDEFFECT 0x00000200L
|
|
#define DTID_EMBEDDEDOBJECT 0x00000400L
|
|
|
|
//
|
|
// This macro checks if pdtgt is a subclass of CIDLDropTarget.
|
|
// (HACK: We assume nobody overrides QueryInterface).
|
|
//
|
|
STDAPI_(BOOL) DoesDropTargetSupportDAD(IDropTarget *pdtgt);
|
|
|
|
//
|
|
// IDs for non-default drag & drop menu
|
|
//
|
|
#define DDIDM_COPY 1
|
|
#define DDIDM_MOVE 2
|
|
#define DDIDM_LINK 3
|
|
#define DDIDM_SCRAP_COPY 4
|
|
#define DDIDM_SCRAP_MOVE 5
|
|
#define DDIDM_DOCLINK 6
|
|
#define DDIDM_CONTENTS_COPY 7
|
|
#define DDIDM_CONTENTS_MOVE 8
|
|
#define DDIDM_SYNCCOPY 9
|
|
#define DDIDM_SYNCCOPYTYPE 10
|
|
#define DDIDM_CONTENTS_LINK 11
|
|
#define DDIDM_CONTENTS_DESKCOMP 12
|
|
#define DDIDM_CONTENTS_DESKIMG 13
|
|
#define DDIDM_OBJECT_COPY 14
|
|
#define DDIDM_OBJECT_MOVE 15
|
|
#define DDIDM_CONTENTS_DESKURL 16
|
|
#define DDIDM_EXTFIRST 0x1000
|
|
#define DDIDM_EXTLAST 0x7fff
|
|
|
|
#define MK_FAKEDROP 0x8000 // Real keys being held down?
|
|
|
|
//===========================================================================
|
|
// HDKA
|
|
//===========================================================================
|
|
//
|
|
// Struct: ContextMenuInfo:
|
|
//
|
|
// This data structure is used by FileView_DoContextMenu (and its private
|
|
// function, _AppendMenuItems) to handler multiple context menu handlers.
|
|
//
|
|
// History:
|
|
// 02-25-93 SatoNa Created
|
|
//
|
|
typedef struct { // cmi
|
|
IContextMenu *pcm;
|
|
UINT idCmdFirst;
|
|
UINT idCmdMax;
|
|
DWORD dwCompat;
|
|
CLSID clsid;
|
|
} ContextMenuInfo;
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
// Dynamic class array
|
|
//
|
|
|
|
STDAPI_(int) DCA_AppendClassSheetInfo(HDCA hdca, HKEY hkeyProgID, LPPROPSHEETHEADER ppsh, IDataObject * pdtobj);
|
|
|
|
//===========================================================================
|
|
// HDXA
|
|
//===========================================================================
|
|
typedef HDSA HDXA; // hdma
|
|
|
|
#define HDXA_Create() ((HDXA)DSA_Create(SIZEOF(ContextMenuInfo), 4))
|
|
|
|
STDAPI_(UINT) HDXA_AppendMenuItems(
|
|
HDXA hdxa, IDataObject * pdtobj,
|
|
UINT nKeys, HKEY *ahkeyClsKeys,
|
|
LPCITEMIDLIST pidlFolder,
|
|
HMENU hmenu, UINT uInsert,
|
|
UINT idCmdFirst, UINT idCmdLast,
|
|
UINT fFlags,
|
|
HDCA hdca);
|
|
STDAPI_(UINT) HDXA_AppendMenuItems2(HDXA hdxa, IDataObject *pdtobj,
|
|
UINT nKeys, HKEY *ahkeyClsKeys,
|
|
LPCITEMIDLIST pidlFolder,
|
|
QCMINFO* pqcm,
|
|
UINT fFlags,
|
|
HDCA hdca,
|
|
IUnknown* pSite);
|
|
|
|
STDAPI HDXA_LetHandlerProcessCommandEx(HDXA hdxa, LPCMINVOKECOMMANDINFOEX pici, UINT_PTR * pidCmd);
|
|
STDAPI HDXA_GetCommandString(HDXA hdxa, UINT_PTR idCmd, UINT wFlags, UINT * pwReserved, LPSTR pszName, UINT cchMax);
|
|
STDAPI_(void) HDXA_DeleteAll(HDXA hdxa);
|
|
STDAPI_(void) HDXA_Destroy(HDXA hdxa);
|
|
|
|
//
|
|
// Clipboard Format for IDLData object.
|
|
//
|
|
#define ICFHDROP 0
|
|
#define ICFFILENAME 1
|
|
#define ICFNETRESOURCE 2
|
|
#define ICFFILECONTENTS 3
|
|
#define ICFFILEGROUPDESCRIPTORA 4
|
|
#define ICFFILENAMEMAPW 5
|
|
#define ICFFILENAMEMAP 6
|
|
#define ICFHIDA 7
|
|
#define ICFOFFSETS 8
|
|
#define ICFPRINTERFRIENDLYNAME 9
|
|
#define ICFPRIVATESHELLDATA 10
|
|
#define ICFHTML 11
|
|
#define ICFFILENAMEW 12
|
|
#define ICFFILEGROUPDESCRIPTORW 13
|
|
#define ICFPREFERREDDROPEFFECT 14
|
|
#define ICFPERFORMEDDROPEFFECT 15
|
|
#define ICFPASTESUCCEEDED 16
|
|
#define ICFSHELLURL 17
|
|
#define ICFINDRAGLOOP 18
|
|
#define ICF_DRAGCONTEXT 19
|
|
#define ICF_TARGETCLSID 20
|
|
#define ICF_EMBEDDEDOBJECT 21
|
|
#define ICF_OBJECTDESCRIPTOR 22
|
|
#define ICF_NOTRECYCLABLE 23
|
|
#define ICFLOGICALPERFORMEDDROPEFFECT 24
|
|
#define ICF_BRIEFCASE 25
|
|
#define ICF_UNICODETEXT 26
|
|
#define ICF_TEXT 27
|
|
#define ICF_DROPEFFECTFOLDERLIST 28
|
|
#define ICF_AUTOPLAYHIDA 29
|
|
#define ICF_MAX 30
|
|
|
|
EXTERN_C CLIPFORMAT g_acfIDLData[];
|
|
|
|
#define g_cfNetResource g_acfIDLData[ICFNETRESOURCE]
|
|
#define g_cfHIDA g_acfIDLData[ICFHIDA]
|
|
#define g_cfOFFSETS g_acfIDLData[ICFOFFSETS]
|
|
#define g_cfPrinterFriendlyName g_acfIDLData[ICFPRINTERFRIENDLYNAME]
|
|
#define g_cfFileNameA g_acfIDLData[ICFFILENAME]
|
|
#define g_cfFileContents g_acfIDLData[ICFFILECONTENTS]
|
|
#define g_cfFileGroupDescriptorA g_acfIDLData[ICFFILEGROUPDESCRIPTORA]
|
|
#define g_cfFileGroupDescriptorW g_acfIDLData[ICFFILEGROUPDESCRIPTORW]
|
|
#define g_cfFileNameMapW g_acfIDLData[ICFFILENAMEMAPW]
|
|
#define g_cfFileNameMapA g_acfIDLData[ICFFILENAMEMAP]
|
|
#define g_cfPrivateShellData g_acfIDLData[ICFPRIVATESHELLDATA]
|
|
#define g_cfHTML g_acfIDLData[ICFHTML]
|
|
#define g_cfFileNameW g_acfIDLData[ICFFILENAMEW]
|
|
#define g_cfPreferredDropEffect g_acfIDLData[ICFPREFERREDDROPEFFECT]
|
|
#define g_cfPerformedDropEffect g_acfIDLData[ICFPERFORMEDDROPEFFECT]
|
|
#define g_cfLogicalPerformedDropEffect g_acfIDLData[ICFLOGICALPERFORMEDDROPEFFECT]
|
|
#define g_cfPasteSucceeded g_acfIDLData[ICFPASTESUCCEEDED]
|
|
#define g_cfShellURL g_acfIDLData[ICFSHELLURL]
|
|
#define g_cfInDragLoop g_acfIDLData[ICFINDRAGLOOP]
|
|
#define g_cfDragContext g_acfIDLData[ICF_DRAGCONTEXT]
|
|
#define g_cfTargetCLSID g_acfIDLData[ICF_TARGETCLSID]
|
|
#define g_cfEmbeddedObject g_acfIDLData[ICF_EMBEDDEDOBJECT]
|
|
#define g_cfObjectDescriptor g_acfIDLData[ICF_OBJECTDESCRIPTOR]
|
|
#define g_cfNotRecyclable g_acfIDLData[ICF_NOTRECYCLABLE]
|
|
#define g_cfBriefObj g_acfIDLData[ICF_BRIEFCASE]
|
|
#define g_cfText g_acfIDLData[ICF_TEXT]
|
|
#define g_cfUnicodeText g_acfIDLData[ICF_UNICODETEXT]
|
|
#define g_cfDropEffectFolderList g_acfIDLData[ICF_DROPEFFECTFOLDERLIST]
|
|
#define g_cfAutoPlayHIDA g_acfIDLData[ICF_AUTOPLAYHIDA]
|
|
|
|
EXTERN_C CLIPFORMAT g_cfMountedVolume;
|
|
|
|
// Most places will only generate one so minimize the number of changes in the code (bad idea!)
|
|
#ifdef UNICODE
|
|
#define g_cfFileNameMap g_cfFileNameMapW
|
|
#define g_cfFileName g_cfFileNameW
|
|
#else
|
|
#define g_cfFileNameMap g_cfFileNameMapA
|
|
#define g_cfFileName g_cfFileNameA
|
|
#endif
|
|
|
|
STDAPI_(LPCITEMIDLIST) IDA_GetIDListPtr(LPIDA pida, UINT i);
|
|
STDAPI_(LPITEMIDLIST) IDA_FullIDList(LPIDA pida, UINT i);
|
|
|
|
#endif // _IDLCOMM_H_
|