Add mingw-w64 header set as initial set.


git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@3 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-headers/include/oledlg.h b/mingw-w64-headers/include/oledlg.h
new file mode 100755
index 0000000..8d8b9a8
--- /dev/null
+++ b/mingw-w64-headers/include/oledlg.h
@@ -0,0 +1,1151 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+#ifndef _OLEDLG_H_
+#define _OLEDLG_H_
+
+#ifndef RC_INVOKED
+#ifndef __cplusplus
+#define NONAMELESSUNION
+#endif
+
+#if defined(_UNICODE) && !defined(UNICODE)
+#define UNICODE
+#endif
+#if defined(UNICODE) && !defined(_UNICODE)
+#define _UNICODE
+#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 <tchar.h>
+#endif
+
+#include <dlgs.h>
+
+#define IDC_OLEUIHELP 99
+
+#define IDC_IO_CREATENEW 2100
+#define IDC_IO_CREATEFROMFILE 2101
+#define IDC_IO_LINKFILE 2102
+#define IDC_IO_OBJECTTYPELIST 2103
+#define IDC_IO_DISPLAYASICON 2104
+#define IDC_IO_CHANGEICON 2105
+#define IDC_IO_FILE 2106
+#define IDC_IO_FILEDISPLAY 2107
+#define IDC_IO_RESULTIMAGE 2108
+#define IDC_IO_RESULTTEXT 2109
+#define IDC_IO_ICONDISPLAY 2110
+#define IDC_IO_OBJECTTYPETEXT 2111
+#define IDC_IO_FILETEXT 2112
+#define IDC_IO_FILETYPE 2113
+#define IDC_IO_INSERTCONTROL 2114
+#define IDC_IO_ADDCONTROL 2115
+#define IDC_IO_CONTROLTYPELIST 2116
+
+#define IDC_PS_PASTE 500
+#define IDC_PS_PASTELINK 501
+#define IDC_PS_SOURCETEXT 502
+#define IDC_PS_PASTELIST 503
+#define IDC_PS_PASTELINKLIST 504
+#define IDC_PS_DISPLAYLIST 505
+#define IDC_PS_DISPLAYASICON 506
+#define IDC_PS_ICONDISPLAY 507
+#define IDC_PS_CHANGEICON 508
+#define IDC_PS_RESULTIMAGE 509
+#define IDC_PS_RESULTTEXT 510
+
+#define IDC_CI_GROUP 120
+#define IDC_CI_CURRENT 121
+#define IDC_CI_CURRENTICON 122
+#define IDC_CI_DEFAULT 123
+#define IDC_CI_DEFAULTICON 124
+#define IDC_CI_FROMFILE 125
+#define IDC_CI_FROMFILEEDIT 126
+#define IDC_CI_ICONLIST 127
+#define IDC_CI_LABEL 128
+#define IDC_CI_LABELEDIT 129
+#define IDC_CI_BROWSE 130
+#define IDC_CI_ICONDISPLAY 131
+
+#define IDC_CV_OBJECTTYPE 150
+#define IDC_CV_DISPLAYASICON 152
+#define IDC_CV_CHANGEICON 153
+#define IDC_CV_ACTIVATELIST 154
+#define IDC_CV_CONVERTTO 155
+#define IDC_CV_ACTIVATEAS 156
+#define IDC_CV_RESULTTEXT 157
+#define IDC_CV_CONVERTLIST 158
+#define IDC_CV_ICONDISPLAY 165
+
+#define IDC_EL_CHANGESOURCE 201
+#define IDC_EL_AUTOMATIC 202
+#define IDC_EL_CANCELLINK 209
+#define IDC_EL_UPDATENOW 210
+#define IDC_EL_OPENSOURCE 211
+#define IDC_EL_MANUAL 212
+#define IDC_EL_LINKSOURCE 216
+#define IDC_EL_LINKTYPE 217
+#define IDC_EL_LINKSLISTBOX 206
+#define IDC_EL_COL1 220
+#define IDC_EL_COL2 221
+#define IDC_EL_COL3 222
+
+#define IDC_BZ_RETRY 600
+#define IDC_BZ_ICON 601
+#define IDC_BZ_MESSAGE1 602
+#define IDC_BZ_SWITCHTO 604
+
+#define IDC_UL_METER 1029
+#define IDC_UL_STOP 1030
+#define IDC_UL_PERCENT 1031
+#define IDC_UL_PROGRESS 1032
+
+#define IDC_PU_LINKS 900
+#define IDC_PU_TEXT 901
+#define IDC_PU_CONVERT 902
+#define IDC_PU_ICON 908
+
+#define IDC_GP_OBJECTNAME 1009
+#define IDC_GP_OBJECTTYPE 1010
+#define IDC_GP_OBJECTSIZE 1011
+#define IDC_GP_CONVERT 1013
+#define IDC_GP_OBJECTICON 1014
+#define IDC_GP_OBJECTLOCATION 1022
+
+#define IDC_VP_PERCENT 1000
+#define IDC_VP_CHANGEICON 1001
+#define IDC_VP_EDITABLE 1002
+#define IDC_VP_ASICON 1003
+#define IDC_VP_RELATIVE 1005
+#define IDC_VP_SPIN 1006
+#define IDC_VP_SCALETXT 1034
+#define IDC_VP_ICONDISPLAY 1021
+#define IDC_VP_RESULTIMAGE 1033
+
+#define IDC_LP_OPENSOURCE 1006
+#define IDC_LP_UPDATENOW 1007
+#define IDC_LP_BREAKLINK 1008
+#define IDC_LP_LINKSOURCE 1012
+#define IDC_LP_CHANGESOURCE 1015
+#define IDC_LP_AUTOMATIC 1016
+#define IDC_LP_MANUAL 1017
+#define IDC_LP_DATE 1018
+#define IDC_LP_TIME 1019
+
+#define IDD_INSERTOBJECT 1000
+#define IDD_CHANGEICON 1001
+#define IDD_CONVERT 1002
+#define IDD_PASTESPECIAL 1003
+#define IDD_EDITLINKS 1004
+#define IDD_BUSY 1006
+#define IDD_UPDATELINKS 1007
+#define IDD_CHANGESOURCE 1009
+#define IDD_INSERTFILEBROWSE 1010
+#define IDD_CHANGEICONBROWSE 1011
+#define IDD_CONVERTONLY 1012
+#define IDD_CHANGESOURCE4 1013
+#define IDD_GNRLPROPS 1100
+#define IDD_VIEWPROPS 1101
+#define IDD_LINKPROPS 1102
+#define IDD_CONVERT4 1103
+#define IDD_CONVERTONLY4 1104
+#define IDD_EDITLINKS4 1105
+#define IDD_GNRLPROPS4 1106
+#define IDD_LINKPROPS4 1107
+#define IDD_PASTESPECIAL4 1108
+
+#define IDD_CANNOTUPDATELINK 1008
+#define IDD_LINKSOURCEUNAVAILABLE 1020
+#define IDD_SERVERNOTFOUND 1023
+#define IDD_OUTOFMEMORY 1024
+#define IDD_SERVERNOTREGW 1021
+#define IDD_LINKTYPECHANGEDW 1022
+#define IDD_SERVERNOTREGA 1025
+#define IDD_LINKTYPECHANGEDA 1026
+#ifdef UNICODE
+#define IDD_SERVERNOTREG IDD_SERVERNOTREGW
+#define IDD_LINKTYPECHANGED IDD_LINKTYPECHANGEDW
+#else
+#define IDD_SERVERNOTREG IDD_SERVERNOTREGA
+#define IDD_LINKTYPECHANGED IDD_LINKTYPECHANGEDA
+#endif
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#pragma pack(push,8)
+
+#define OLESTDDELIM TEXT("\\")
+
+  typedef UINT (CALLBACK *LPFNOLEUIHOOK)(HWND,UINT,WPARAM,LPARAM);
+
+#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")
+
+#define ID_BROWSE_CHANGEICON 1
+#define ID_BROWSE_INSERTFILE 2
+#define ID_BROWSE_ADDCONTROL 3
+#define ID_BROWSE_CHANGESOURCE 4
+
+#define OLEUI_FALSE 0
+#define OLEUI_SUCCESS 1
+#define OLEUI_OK 1
+#define OLEUI_CANCEL 2
+
+#define OLEUI_ERR_STANDARDMIN 100
+#define OLEUI_ERR_OLEMEMALLOC 100
+#define OLEUI_ERR_STRUCTURENULL 101
+#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
+#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_STANDARDMAX 116
+
+  STDAPI_(WINBOOL) OleUIAddVerbMenuW(LPOLEOBJECT lpOleObj,LPCWSTR lpszShortType,HMENU hMenu,UINT uPos,UINT uIDVerbMin,UINT uIDVerbMax,WINBOOL bAddConvert,UINT idConvert,HMENU *lphMenu);
+  STDAPI_(WINBOOL) OleUIAddVerbMenuA(LPOLEOBJECT lpOleObj,LPCSTR lpszShortType,HMENU hMenu,UINT uPos,UINT uIDVerbMin,UINT uIDVerbMax,WINBOOL bAddConvert,UINT idConvert,HMENU *lphMenu);
+#ifdef UNICODE
+#define OleUIAddVerbMenu OleUIAddVerbMenuW
+#else
+#define OleUIAddVerbMenu OleUIAddVerbMenuA
+#endif
+
+  typedef struct tagOLEUIINSERTOBJECTW {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    HWND hWndOwner;
+    LPCWSTR lpszCaption;
+    LPFNOLEUIHOOK lpfnHook;
+    LPARAM lCustData;
+    HINSTANCE hInstance;
+    LPCWSTR lpszTemplate;
+    HRSRC hResource;
+    CLSID clsid;
+    LPWSTR lpszFile;
+    UINT cchFile;
+    UINT cClsidExclude;
+    LPCLSID lpClsidExclude;
+    IID iid;
+    DWORD oleRender;
+    LPFORMATETC lpFormatEtc;
+    LPOLECLIENTSITE lpIOleClientSite;
+    LPSTORAGE lpIStorage;
+    LPVOID *ppvObj;
+    SCODE sc;
+    HGLOBAL hMetaPict;
+  } OLEUIINSERTOBJECTW,*POLEUIINSERTOBJECTW,*LPOLEUIINSERTOBJECTW;
+
+  typedef struct tagOLEUIINSERTOBJECTA {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    HWND hWndOwner;
+    LPCSTR lpszCaption;
+    LPFNOLEUIHOOK lpfnHook;
+    LPARAM lCustData;
+    HINSTANCE hInstance;
+    LPCSTR lpszTemplate;
+    HRSRC hResource;
+    CLSID clsid;
+    LPSTR lpszFile;
+    UINT cchFile;
+    UINT cClsidExclude;
+    LPCLSID lpClsidExclude;
+    IID iid;
+    DWORD oleRender;
+    LPFORMATETC lpFormatEtc;
+    LPOLECLIENTSITE lpIOleClientSite;
+    LPSTORAGE lpIStorage;
+    LPVOID *ppvObj;
+    SCODE sc;
+    HGLOBAL hMetaPict;
+  } OLEUIINSERTOBJECTA,*POLEUIINSERTOBJECTA,*LPOLEUIINSERTOBJECTA;
+
+  STDAPI_(UINT) OleUIInsertObjectW(LPOLEUIINSERTOBJECTW);
+  STDAPI_(UINT) OleUIInsertObjectA(LPOLEUIINSERTOBJECTA);
+
+#ifdef UNICODE
+#define tagOLEUIINSERTOBJECT tagOLEUIINSERTOBJECTW
+#define OLEUIINSERTOBJECT OLEUIINSERTOBJECTW
+#define POLEUIINSERTOBJECT POLEUIINSERTOBJECTW
+#define LPOLEUIINSERTOBJECT LPOLEUIINSERTOBJECTW
+#define OleUIInsertObject OleUIInsertObjectW
+#else
+#define tagOLEUIINSERTOBJECT tagOLEUIINSERTOBJECTA
+#define OLEUIINSERTOBJECT OLEUIINSERTOBJECTA
+#define POLEUIINSERTOBJECT POLEUIINSERTOBJECTA
+#define LPOLEUIINSERTOBJECT LPOLEUIINSERTOBJECTA
+#define OleUIInsertObject OleUIInsertObjectA
+#endif
+
+#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
+
+#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)
+
+  typedef enum tagOLEUIPASTEFLAG {
+    OLEUIPASTE_ENABLEICON = 2048,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;
+
+  typedef struct tagOLEUIPASTEENTRYW {
+    FORMATETC fmtetc;
+    LPCWSTR lpstrFormatName;
+    LPCWSTR lpstrResultText;
+    DWORD dwFlags;
+    DWORD dwScratchSpace;
+  } OLEUIPASTEENTRYW,*POLEUIPASTEENTRYW,*LPOLEUIPASTEENTRYW;
+
+  typedef struct tagOLEUIPASTEENTRYA {
+    FORMATETC fmtetc;
+    LPCSTR lpstrFormatName;
+    LPCSTR lpstrResultText;
+    DWORD dwFlags;
+    DWORD dwScratchSpace;
+  } OLEUIPASTEENTRYA,*POLEUIPASTEENTRYA,*LPOLEUIPASTEENTRYA;
+
+#ifdef UNICODE
+#define tagOLEUIPASTEENTRY tagOLEUIPASTEENTRYW
+#define OLEUIPASTEENTRY OLEUIPASTEENTRYW
+#define POLEUIPASTEENTRY POLEUIPASTEENTRYW
+#define LPOLEUIPASTEENTRY LPOLEUIPASTEENTRYW
+#else
+#define tagOLEUIPASTEENTRY tagOLEUIPASTEENTRYA
+#define OLEUIPASTEENTRY OLEUIPASTEENTRYA
+#define POLEUIPASTEENTRY POLEUIPASTEENTRYA
+#define LPOLEUIPASTEENTRY LPOLEUIPASTEENTRYA
+#endif
+
+#define PS_MAXLINKTYPES 8
+
+  typedef struct tagOLEUIPASTESPECIALW {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    HWND hWndOwner;
+    LPCWSTR lpszCaption;
+    LPFNOLEUIHOOK lpfnHook;
+    LPARAM lCustData;
+    HINSTANCE hInstance;
+    LPCWSTR lpszTemplate;
+    HRSRC hResource;
+    LPDATAOBJECT lpSrcDataObj;
+    LPOLEUIPASTEENTRYW arrPasteEntries;
+    int cPasteEntries;
+    UINT *arrLinkTypes;
+    int cLinkTypes;
+    UINT cClsidExclude;
+    LPCLSID lpClsidExclude;
+    int nSelectedIndex;
+    WINBOOL fLink;
+    HGLOBAL hMetaPict;
+    SIZEL sizel;
+  } OLEUIPASTESPECIALW,*POLEUIPASTESPECIALW,*LPOLEUIPASTESPECIALW;
+
+  typedef struct tagOLEUIPASTESPECIALA {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    HWND hWndOwner;
+    LPCSTR lpszCaption;
+    LPFNOLEUIHOOK lpfnHook;
+    LPARAM lCustData;
+    HINSTANCE hInstance;
+    LPCSTR lpszTemplate;
+    HRSRC hResource;
+    LPDATAOBJECT lpSrcDataObj;
+    LPOLEUIPASTEENTRYA arrPasteEntries;
+    int cPasteEntries;
+    UINT *arrLinkTypes;
+    int cLinkTypes;
+    UINT cClsidExclude;
+    LPCLSID lpClsidExclude;
+    int nSelectedIndex;
+    WINBOOL fLink;
+    HGLOBAL hMetaPict;
+    SIZEL sizel;
+  } OLEUIPASTESPECIALA,*POLEUIPASTESPECIALA,*LPOLEUIPASTESPECIALA;
+
+#ifdef UNICODE
+#define tagOLEUIPASTESPECIAL tagOLEUIPASTESPECIALW
+#define OLEUIPASTESPECIAL OLEUIPASTESPECIALW
+#define POLEUIPASTESPECIAL POLEUIPASTESPECIALW
+#define LPOLEUIPASTESPECIAL LPOLEUIPASTESPECIALW
+#else
+#define tagOLEUIPASTESPECIAL tagOLEUIPASTESPECIALA
+#define OLEUIPASTESPECIAL OLEUIPASTESPECIALA
+#define POLEUIPASTESPECIAL POLEUIPASTESPECIALA
+#define LPOLEUIPASTESPECIAL LPOLEUIPASTESPECIALA
+#endif
+
+  STDAPI_(UINT) OleUIPasteSpecialW(LPOLEUIPASTESPECIALW);
+  STDAPI_(UINT) OleUIPasteSpecialA(LPOLEUIPASTESPECIALA);
+#ifdef UNICODE
+#define OleUIPasteSpecial OleUIPasteSpecialW
+#else
+#define OleUIPasteSpecial OleUIPasteSpecialA
+#endif
+
+#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
+
+#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)
+
+#undef INTERFACE
+#define INTERFACE IOleUILinkContainerW
+
+  DECLARE_INTERFACE_(IOleUILinkContainerW,IUnknown) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE;
+    STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink,DWORD dwUpdateOpt) PURE;
+    STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink,DWORD *lpdwUpdateOpt) PURE;
+    STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink,LPWSTR lpszDisplayName,ULONG lenFileName,ULONG *pchEaten,WINBOOL fValidateSource) PURE;
+    STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink,LPWSTR *lplpszDisplayName,ULONG *lplenFileName,LPWSTR *lplpszFullLinkType,LPWSTR *lplpszShortLinkType,WINBOOL *lpfSourceAvailable,WINBOOL *lpfIsSelected) PURE;
+    STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE;
+    STDMETHOD(UpdateLink)(THIS_ DWORD dwLink,WINBOOL fErrorMessage,WINBOOL fReserved) PURE;
+    STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
+  };
+
+  typedef IOleUILinkContainerW *LPOLEUILINKCONTAINERW;
+
+#undef INTERFACE
+#define INTERFACE IOleUILinkContainerA
+
+  DECLARE_INTERFACE_(IOleUILinkContainerA,IUnknown) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE;
+    STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink,DWORD dwUpdateOpt) PURE;
+    STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink,DWORD *lpdwUpdateOpt) PURE;
+    STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink,LPSTR lpszDisplayName,ULONG lenFileName,ULONG *pchEaten,WINBOOL fValidateSource) PURE;
+    STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink,LPSTR *lplpszDisplayName,ULONG *lplenFileName,LPSTR *lplpszFullLinkType,LPSTR *lplpszShortLinkType,WINBOOL *lpfSourceAvailable,WINBOOL *lpfIsSelected) PURE;
+    STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE;
+    STDMETHOD(UpdateLink)(THIS_ DWORD dwLink,WINBOOL fErrorMessage,WINBOOL fReserved) PURE;
+    STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
+  };
+
+  typedef IOleUILinkContainerA *LPOLEUILINKCONTAINERA;
+
+#ifdef UNICODE
+#define IOleUILinkContainer IOleUILinkContainerW
+#define IOleUILinkContainerVtbl IOleUILinkContainerWVtbl
+#define LPOLEUILINKCONTAINER LPOLEUILINKCONTAINERW
+#else
+#define IOleUILinkContainer IOleUILinkContainerA
+#define IOleUILinkContainerVtbl IOleUILinkContainerAVtbl
+#define LPOLEUILINKCONTAINER LPOLEUILINKCONTAINERA
+#endif
+
+  typedef struct tagOLEUIEDITLINKSW {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    HWND hWndOwner;
+    LPCWSTR lpszCaption;
+    LPFNOLEUIHOOK lpfnHook;
+    LPARAM lCustData;
+    HINSTANCE hInstance;
+    LPCWSTR lpszTemplate;
+    HRSRC hResource;
+    LPOLEUILINKCONTAINERW lpOleUILinkContainer;
+  } OLEUIEDITLINKSW,*POLEUIEDITLINKSW,*LPOLEUIEDITLINKSW;
+
+  typedef struct tagOLEUIEDITLINKSA {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    HWND hWndOwner;
+    LPCSTR lpszCaption;
+    LPFNOLEUIHOOK lpfnHook;
+    LPARAM lCustData;
+    HINSTANCE hInstance;
+    LPCSTR lpszTemplate;
+    HRSRC hResource;
+    LPOLEUILINKCONTAINERA lpOleUILinkContainer;
+  } OLEUIEDITLINKSA,*POLEUIEDITLINKSA,*LPOLEUIEDITLINKSA;
+
+#ifdef UNICODE
+#define tagOLEUIEDITLINKS tagOLEUIEDITLINKSW
+#define OLEUIEDITLINKS OLEUIEDITLINKSW
+#define POLEUIEDITLINKS POLEUIEDITLINKSW
+#define LPOLEUIEDITLINKS LPOLEUIEDITLINKSW
+#else
+#define tagOLEUIEDITLINKS tagOLEUIEDITLINKSA
+#define OLEUIEDITLINKS OLEUIEDITLINKSA
+#define POLEUIEDITLINKS POLEUIEDITLINKSA
+#define LPOLEUIEDITLINKS LPOLEUIEDITLINKSA
+#endif
+
+#define OLEUI_ELERR_LINKCNTRNULL (OLEUI_ERR_STANDARDMAX+0)
+#define OLEUI_ELERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+1)
+
+  STDAPI_(UINT) OleUIEditLinksW(LPOLEUIEDITLINKSW);
+  STDAPI_(UINT) OleUIEditLinksA(LPOLEUIEDITLINKSA);
+
+#ifdef UNICODE
+#define OleUIEditLinks OleUIEditLinksW
+#else
+#define OleUIEditLinks OleUIEditLinksA
+#endif
+
+#define ELF_SHOWHELP 0x00000001L
+#define ELF_DISABLEUPDATENOW 0x00000002L
+#define ELF_DISABLEOPENSOURCE 0x00000004L
+#define ELF_DISABLECHANGESOURCE 0x00000008L
+#define ELF_DISABLECANCELLINK 0x00000010L
+
+  typedef struct tagOLEUICHANGEICONW {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    HWND hWndOwner;
+    LPCWSTR lpszCaption;
+    LPFNOLEUIHOOK lpfnHook;
+    LPARAM lCustData;
+    HINSTANCE hInstance;
+    LPCWSTR lpszTemplate;
+    HRSRC hResource;
+    HGLOBAL hMetaPict;
+    CLSID clsid;
+    WCHAR szIconExe[MAX_PATH];
+    int cchIconExe;
+  } OLEUICHANGEICONW,*POLEUICHANGEICONW,*LPOLEUICHANGEICONW;
+
+  typedef struct tagOLEUICHANGEICONA {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    HWND hWndOwner;
+    LPCSTR lpszCaption;
+    LPFNOLEUIHOOK lpfnHook;
+    LPARAM lCustData;
+    HINSTANCE hInstance;
+    LPCSTR lpszTemplate;
+    HRSRC hResource;
+    HGLOBAL hMetaPict;
+    CLSID clsid;
+    CHAR szIconExe[MAX_PATH];
+    int cchIconExe;
+  } OLEUICHANGEICONA,*POLEUICHANGEICONA,*LPOLEUICHANGEICONA;
+
+  STDAPI_(UINT) OleUIChangeIconW(LPOLEUICHANGEICONW);
+  STDAPI_(UINT) OleUIChangeIconA(LPOLEUICHANGEICONA);
+
+#ifdef UNICODE
+#define tagOLEUICHANGEICON tagOLEUICHANGEICONW
+#define OLEUICHANGEICON OLEUICHANGEICONW
+#define POLEUICHANGEICON POLEUICHANGEICONW
+#define LPOLEUICHANGEICON LPOLEUICHANGEICONW
+#define OleUIChangeIcon OleUIChangeIconW
+#else
+#define tagOLEUICHANGEICON tagOLEUICHANGEICONA
+#define OLEUICHANGEICON OLEUICHANGEICONA
+#define POLEUICHANGEICON POLEUICHANGEICONA
+#define LPOLEUICHANGEICON LPOLEUICHANGEICONA
+#define OleUIChangeIcon OleUIChangeIconA
+#endif
+
+#define CIF_SHOWHELP 0x00000001L
+#define CIF_SELECTCURRENT 0x00000002L
+#define CIF_SELECTDEFAULT 0x00000004L
+#define CIF_SELECTFROMFILE 0x00000008L
+#define CIF_USEICONEXE 0x00000010L
+
+#define OLEUI_CIERR_MUSTHAVECLSID (OLEUI_ERR_STANDARDMAX+0)
+#define OLEUI_CIERR_MUSTHAVECURRENTMETAFILE (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_CIERR_SZICONEXEINVALID (OLEUI_ERR_STANDARDMAX+2)
+
+#define PROP_HWND_CHGICONDLG TEXT("HWND_CIDLG")
+
+  typedef struct tagOLEUICONVERTW {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    HWND hWndOwner;
+    LPCWSTR lpszCaption;
+    LPFNOLEUIHOOK lpfnHook;
+    LPARAM lCustData;
+    HINSTANCE hInstance;
+    LPCWSTR lpszTemplate;
+    HRSRC hResource;
+    CLSID clsid;
+    CLSID clsidConvertDefault;
+    CLSID clsidActivateDefault;
+    CLSID clsidNew;
+    DWORD dvAspect;
+    WORD wFormat;
+    WINBOOL fIsLinkedObject;
+    HGLOBAL hMetaPict;
+    LPWSTR lpszUserType;
+    WINBOOL fObjectsIconChanged;
+    LPWSTR lpszDefLabel;
+    UINT cClsidExclude;
+    LPCLSID lpClsidExclude;
+  } OLEUICONVERTW,*POLEUICONVERTW,*LPOLEUICONVERTW;
+
+  typedef struct tagOLEUICONVERTA {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    HWND hWndOwner;
+    LPCSTR lpszCaption;
+    LPFNOLEUIHOOK lpfnHook;
+    LPARAM lCustData;
+    HINSTANCE hInstance;
+    LPCSTR lpszTemplate;
+    HRSRC hResource;
+    CLSID clsid;
+    CLSID clsidConvertDefault;
+    CLSID clsidActivateDefault;
+    CLSID clsidNew;
+    DWORD dvAspect;
+    WORD wFormat;
+    WINBOOL fIsLinkedObject;
+    HGLOBAL hMetaPict;
+    LPSTR lpszUserType;
+    WINBOOL fObjectsIconChanged;
+    LPSTR lpszDefLabel;
+    UINT cClsidExclude;
+    LPCLSID lpClsidExclude;
+  } OLEUICONVERTA,*POLEUICONVERTA,*LPOLEUICONVERTA;
+
+  STDAPI_(UINT) OleUIConvertW(LPOLEUICONVERTW);
+  STDAPI_(UINT) OleUIConvertA(LPOLEUICONVERTA);
+
+#ifdef UNICODE
+#define tagOLEUICONVERT tagOLEUICONVERTW
+#define OLEUICONVERT OLEUICONVERTW
+#define POLEUICONVERT POLEUICONVERTW
+#define LPOLEUICONVERT LPOLEUICONVERTW
+#define OleUIConvert OleUIConvertW
+#else
+#define tagOLEUICONVERT tagOLEUICONVERTA
+#define OLEUICONVERT OLEUICONVERTA
+#define POLEUICONVERT POLEUICONVERTA
+#define LPOLEUICONVERT LPOLEUICONVERTA
+#define OleUIConvert OleUIConvertA
+#endif
+
+  STDAPI_(WINBOOL) OleUICanConvertOrActivateAs(REFCLSID rClsid,WINBOOL fIsLinkedObject,WORD wFormat);
+
+#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
+
+#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)
+
+  typedef struct tagOLEUIBUSYW {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    HWND hWndOwner;
+    LPCWSTR lpszCaption;
+    LPFNOLEUIHOOK lpfnHook;
+    LPARAM lCustData;
+    HINSTANCE hInstance;
+    LPCWSTR lpszTemplate;
+    HRSRC hResource;
+    HTASK hTask;
+    HWND *lphWndDialog;
+  } OLEUIBUSYW,*POLEUIBUSYW,*LPOLEUIBUSYW;
+
+  typedef struct tagOLEUIBUSYA {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    HWND hWndOwner;
+    LPCSTR lpszCaption;
+    LPFNOLEUIHOOK lpfnHook;
+    LPARAM lCustData;
+    HINSTANCE hInstance;
+    LPCSTR lpszTemplate;
+    HRSRC hResource;
+    HTASK hTask;
+    HWND *lphWndDialog;
+  } OLEUIBUSYA,*POLEUIBUSYA,*LPOLEUIBUSYA;
+
+  STDAPI_(UINT) OleUIBusyW(LPOLEUIBUSYW);
+  STDAPI_(UINT) OleUIBusyA(LPOLEUIBUSYA);
+
+#ifdef UNICODE
+#define tagOLEUIBUSY tagOLEUIBUSYW
+#define OLEUIBUSY OLEUIBUSYW
+#define POLEUIBUSY POLEUIBUSYW
+#define LPOLEUIBUSY LPOLEUIBUSYW
+#define OleUIBusy OleUIBusyW
+#else
+#define tagOLEUIBUSY tagOLEUIBUSYA
+#define OLEUIBUSY OLEUIBUSYA
+#define POLEUIBUSY POLEUIBUSYA
+#define LPOLEUIBUSY LPOLEUIBUSYA
+#define OleUIBusy OleUIBusyA
+#endif
+
+#define BZ_DISABLECANCELBUTTON 0x00000001L
+#define BZ_DISABLESWITCHTOBUTTON 0x00000002L
+#define BZ_DISABLERETRYBUTTON 0x00000004L
+
+#define BZ_NOTRESPONDINGDIALOG 0x00000008L
+
+#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)
+
+  typedef struct tagOLEUICHANGESOURCEW {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    HWND hWndOwner;
+    LPCWSTR lpszCaption;
+    LPFNOLEUIHOOK lpfnHook;
+    LPARAM lCustData;
+    HINSTANCE hInstance;
+    LPCWSTR lpszTemplate;
+    HRSRC hResource;
+    OPENFILENAMEW *lpOFN;
+    DWORD dwReserved1[4];
+    LPOLEUILINKCONTAINERW lpOleUILinkContainer;
+    DWORD dwLink;
+    LPWSTR lpszDisplayName;
+    ULONG nFileLength;
+    LPWSTR lpszFrom;
+    LPWSTR lpszTo;
+  } OLEUICHANGESOURCEW,*POLEUICHANGESOURCEW,*LPOLEUICHANGESOURCEW;
+
+  typedef struct tagOLEUICHANGESOURCEA {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    HWND hWndOwner;
+    LPCSTR lpszCaption;
+    LPFNOLEUIHOOK lpfnHook;
+    LPARAM lCustData;
+    HINSTANCE hInstance;
+    LPCSTR lpszTemplate;
+    HRSRC hResource;
+    OPENFILENAMEA *lpOFN;
+    DWORD dwReserved1[4];
+    LPOLEUILINKCONTAINERA lpOleUILinkContainer;
+    DWORD dwLink;
+    LPSTR lpszDisplayName;
+    ULONG nFileLength;
+    LPSTR lpszFrom;
+    LPSTR lpszTo;
+  } OLEUICHANGESOURCEA,*POLEUICHANGESOURCEA,*LPOLEUICHANGESOURCEA;
+
+  STDAPI_(UINT) OleUIChangeSourceW(LPOLEUICHANGESOURCEW);
+  STDAPI_(UINT) OleUIChangeSourceA(LPOLEUICHANGESOURCEA);
+
+#ifdef UNICODE
+#define tagOLEUICHANGESOURCE tagOLEUICHANGESOURCEW
+#define OLEUICHANGESOURCE OLEUICHANGESOURCEW
+#define POLEUICHANGESOURCE POLEUICHANGESOURCEW
+#define LPOLEUICHANGESOURCE LPOLEUICHANGESOURCEW
+#define OleUIChangeSource OleUIChangeSourceW
+#else
+#define tagOLEUICHANGESOURCE tagOLEUICHANGESOURCEA
+#define OLEUICHANGESOURCE OLEUICHANGESOURCEA
+#define POLEUICHANGESOURCE POLEUICHANGESOURCEA
+#define LPOLEUICHANGESOURCE LPOLEUICHANGESOURCEA
+#define OleUIChangeSource OleUIChangeSourceA
+#endif
+
+#define CSF_SHOWHELP 0x00000001L
+#define CSF_VALIDSOURCE 0x00000002L
+#define CSF_ONLYGETSOURCE 0x00000004L
+#define CSF_EXPLORER 0x00000008L
+
+#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+6)
+
+#undef INTERFACE
+#define INTERFACE IOleUIObjInfoW
+
+  DECLARE_INTERFACE_(IOleUIObjInfoW,IUnknown) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    STDMETHOD(GetObjectInfo)(THIS_ DWORD dwObject,DWORD *lpdwObjSize,LPWSTR *lplpszLabel,LPWSTR *lplpszType,LPWSTR *lplpszShortType,LPWSTR *lplpszLocation) PURE;
+    STDMETHOD(GetConvertInfo)(THIS_ DWORD dwObject,CLSID *lpClassID,WORD *lpwFormat,CLSID *lpConvertDefaultClassID,LPCLSID *lplpClsidExclude,UINT *lpcClsidExclude) PURE;
+    STDMETHOD(ConvertObject)(THIS_ DWORD dwObject,REFCLSID clsidNew) PURE;
+    STDMETHOD(GetViewInfo)(THIS_ DWORD dwObject,HGLOBAL *phMetaPict,DWORD *pdvAspect,int *pnCurrentScale) PURE;
+    STDMETHOD(SetViewInfo)(THIS_ DWORD dwObject,HGLOBAL hMetaPict,DWORD dvAspect,int nCurrentScale,WINBOOL bRelativeToOrig) PURE;
+  };
+
+  typedef IOleUIObjInfoW *LPOLEUIOBJINFOW;
+
+#undef INTERFACE
+#define INTERFACE IOleUIObjInfoA
+
+  DECLARE_INTERFACE_(IOleUIObjInfoA,IUnknown) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    STDMETHOD(GetObjectInfo)(THIS_ DWORD dwObject,DWORD *lpdwObjSize,LPSTR *lplpszLabel,LPSTR *lplpszType,LPSTR *lplpszShortType,LPSTR *lplpszLocation) PURE;
+    STDMETHOD(GetConvertInfo)(THIS_ DWORD dwObject,CLSID *lpClassID,WORD *lpwFormat,CLSID *lpConvertDefaultClassID,LPCLSID *lplpClsidExclude,UINT *lpcClsidExclude) PURE;
+    STDMETHOD(ConvertObject)(THIS_ DWORD dwObject,REFCLSID clsidNew) PURE;
+    STDMETHOD(GetViewInfo)(THIS_ DWORD dwObject,HGLOBAL *phMetaPict,DWORD *pdvAspect,int *pnCurrentScale) PURE;
+    STDMETHOD(SetViewInfo)(THIS_ DWORD dwObject,HGLOBAL hMetaPict,DWORD dvAspect,int nCurrentScale,WINBOOL bRelativeToOrig) PURE;
+  };
+
+  typedef IOleUIObjInfoA *LPOLEUIOBJINFOA;
+
+#ifdef UNICODE
+#define IOleUIObjInfo IOleUIObjInfoW
+#define IOleUIObjInfoVtbl IOleUIObjInfoWVtbl
+#define LPOLEUIOBJINFO LPOLEUIOBJINFOW
+#else
+#define IOleUIObjInfo IOleUIObjInfoA
+#define IOleUIObjInfoVtbl IOleUIObjInfoAVtbl
+#define LPOLEUIOBJINFO LPOLEUIOBJINFOA
+#endif
+
+#undef INTERFACE
+#define INTERFACE IOleUILinkInfoW
+
+  DECLARE_INTERFACE_(IOleUILinkInfoW,IOleUILinkContainerW) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE;
+    STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink,DWORD dwUpdateOpt) PURE;
+    STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink,DWORD *lpdwUpdateOpt) PURE;
+    STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink,LPWSTR lpszDisplayName,ULONG lenFileName,ULONG *pchEaten,WINBOOL fValidateSource) PURE;
+    STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink,LPWSTR *lplpszDisplayName,ULONG *lplenFileName,LPWSTR *lplpszFullLinkType,LPWSTR *lplpszShortLinkType,WINBOOL *lpfSourceAvailable,WINBOOL *lpfIsSelected) PURE;
+    STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE;
+    STDMETHOD(UpdateLink)(THIS_ DWORD dwLink,WINBOOL fErrorMessage,WINBOOL fReserved) PURE;
+    STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
+    STDMETHOD(GetLastUpdate)(THIS_ DWORD dwLink,FILETIME *lpLastUpdate) PURE;
+  };
+
+  typedef IOleUILinkInfoW *LPOLEUILINKINFOW;
+
+#undef INTERFACE
+#define INTERFACE IOleUILinkInfoA
+
+  DECLARE_INTERFACE_(IOleUILinkInfoA,IOleUILinkContainerA) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE;
+    STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink,DWORD dwUpdateOpt) PURE;
+    STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink,DWORD *lpdwUpdateOpt) PURE;
+    STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink,LPSTR lpszDisplayName,ULONG lenFileName,ULONG *pchEaten,WINBOOL fValidateSource) PURE;
+    STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink,LPSTR *lplpszDisplayName,ULONG *lplenFileName,LPSTR *lplpszFullLinkType,LPSTR *lplpszShortLinkType,WINBOOL *lpfSourceAvailable,WINBOOL *lpfIsSelected) PURE;
+    STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE;
+    STDMETHOD(UpdateLink)(THIS_ DWORD dwLink,WINBOOL fErrorMessage,WINBOOL fReserved) PURE;
+    STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
+    STDMETHOD(GetLastUpdate)(THIS_ DWORD dwLink,FILETIME *lpLastUpdate) PURE;
+  };
+
+  typedef IOleUILinkInfoA *LPOLEUILINKINFOA;
+
+#ifdef UNICODE
+#define IOleUILinkInfo IOleUILinkInfoW
+#define IOleUILinkInfoVtbl IOleUILinkInfoWVtbl
+#define LPOLEUILINKINFO LPOLEUILINKINFOW
+#else
+#define IOleUILinkInfo IOleUILinkInfoA
+#define IOleUILinkInfoVtbl IOleUILinkInfoAVtbl
+#define LPOLEUILINKINFO LPOLEUILINKINFOA
+#endif
+
+  struct tagOLEUIOBJECTPROPSW;
+  struct tagOLEUIOBJECTPROPSA;
+
+  typedef struct tagOLEUIGNRLPROPSW {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    DWORD dwReserved1[2];
+    LPFNOLEUIHOOK lpfnHook;
+    LPARAM lCustData;
+    DWORD dwReserved2[3];
+    struct tagOLEUIOBJECTPROPSW *lpOP;
+  } OLEUIGNRLPROPSW,*POLEUIGNRLPROPSW,*LPOLEUIGNRLPROPSW;
+
+  typedef struct tagOLEUIGNRLPROPSA {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    DWORD dwReserved1[2];
+    LPFNOLEUIHOOK lpfnHook;
+    LPARAM lCustData;
+    DWORD dwReserved2[3];
+    struct tagOLEUIOBJECTPROPSA *lpOP;
+  } OLEUIGNRLPROPSA,*POLEUIGNRLPROPSA,*LPOLEUIGNRLPROPSA;
+
+#ifdef UNICODE
+#define tagOLEUIGNRLPROPS tagOLEUIGNRLPROPSW
+#define OLEUIGNRLPROPS OLEUIGNRLPROPSW
+#define POLEUIGNRLPROPS POLEUIGNRLPROPSW
+#define LPOLEUIGNRLPROPS LPOLEUIGNRLPROPSW
+#else
+#define tagOLEUIGNRLPROPS tagOLEUIGNRLPROPSA
+#define OLEUIGNRLPROPS OLEUIGNRLPROPSA
+#define POLEUIGNRLPROPS POLEUIGNRLPROPSA
+#define LPOLEUIGNRLPROPS LPOLEUIGNRLPROPSA
+#endif
+
+  typedef struct tagOLEUIVIEWPROPSW {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    DWORD dwReserved1[2];
+    LPFNOLEUIHOOK lpfnHook;
+    LPARAM lCustData;
+    DWORD dwReserved2[3];
+    struct tagOLEUIOBJECTPROPSW *lpOP;
+    int nScaleMin;
+    int nScaleMax;
+  } OLEUIVIEWPROPSW,*POLEUIVIEWPROPSW,*LPOLEUIVIEWPROPSW;
+
+  typedef struct tagOLEUIVIEWPROPSA {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    DWORD dwReserved1[2];
+    LPFNOLEUIHOOK lpfnHook;
+    LPARAM lCustData;
+    DWORD dwReserved2[3];
+    struct tagOLEUIOBJECTPROPSA *lpOP;
+    int nScaleMin;
+    int nScaleMax;
+  } OLEUIVIEWPROPSA,*POLEUIVIEWPROPSA,*LPOLEUIVIEWPROPSA;
+
+#ifdef UNICODE
+#define tagOLEUIVIEWPROPS tagOLEUIVIEWPROPSW
+#define OLEUIVIEWPROPS OLEUIVIEWPROPSW
+#define POLEUIVIEWPROPS POLEUIVIEWPROPSW
+#define LPOLEUIVIEWPROPS LPOLEUIVIEWPROPSW
+#else
+#define tagOLEUIVIEWPROPS tagOLEUIVIEWPROPSA
+#define OLEUIVIEWPROPS OLEUIVIEWPROPSA
+#define POLEUIVIEWPROPS POLEUIVIEWPROPSA
+#define LPOLEUIVIEWPROPS LPOLEUIVIEWPROPSA
+#endif
+
+#define VPF_SELECTRELATIVE 0x00000001L
+#define VPF_DISABLERELATIVE 0x00000002L
+#define VPF_DISABLESCALE 0x00000004L
+
+  typedef struct tagOLEUILINKPROPSW {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    DWORD dwReserved1[2];
+    LPFNOLEUIHOOK lpfnHook;
+    LPARAM lCustData;
+    DWORD dwReserved2[3];
+    struct tagOLEUIOBJECTPROPSW *lpOP;
+  } OLEUILINKPROPSW,*POLEUILINKPROPSW,*LPOLEUILINKPROPSW;
+
+  typedef struct tagOLEUILINKPROPSA {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    DWORD dwReserved1[2];
+    LPFNOLEUIHOOK lpfnHook;
+    LPARAM lCustData;
+    DWORD dwReserved2[3];
+    struct tagOLEUIOBJECTPROPSA *lpOP;
+  } OLEUILINKPROPSA,*POLEUILINKPROPSA,*LPOLEUILINKPROPSA;
+
+#ifdef UNICODE
+#define tagOLEUILINKPROPS tagOLEUILINKPROPSW
+#define OLEUILINKPROPS OLEUILINKPROPSW
+#define POLEUILINKPROPS POLEUILINKPROPSW
+#define LPOLEUILINKPROPS LPOLEUILINKPROPSW
+#else
+#define tagOLEUILINKPROPS tagOLEUILINKPROPSA
+#define OLEUILINKPROPS OLEUILINKPROPSA
+#define POLEUILINKPROPS POLEUILINKPROPSA
+#define LPOLEUILINKPROPS LPOLEUILINKPROPSA
+#endif
+
+#include <prsht.h>
+
+#ifndef PSM_SETFINISHTEXTA
+  typedef struct _PROPSHEETHEADER *LPPROPSHEETHEADERW;
+  typedef struct _PROPSHEETHEADER *LPPROPSHEETHEADERA;
+#else
+  typedef struct _PROPSHEETHEADERW *LPPROPSHEETHEADERW;
+  typedef struct _PROPSHEETHEADERA *LPPROPSHEETHEADERA;
+#ifdef UNICODE
+#define LPPROPSHEETHEADER LPPROPSHEETHEADERW
+#else
+#define LPPROPSHEETHEADER LPPROPSHEETHEADERA
+#endif
+#endif
+
+  typedef struct tagOLEUIOBJECTPROPSW {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    LPPROPSHEETHEADERW lpPS;
+    DWORD dwObject;
+    LPOLEUIOBJINFOW lpObjInfo;
+    DWORD dwLink;
+    LPOLEUILINKINFOW lpLinkInfo;
+    LPOLEUIGNRLPROPSW lpGP;
+    LPOLEUIVIEWPROPSW lpVP;
+    LPOLEUILINKPROPSW lpLP;
+  } OLEUIOBJECTPROPSW,*POLEUIOBJECTPROPSW,*LPOLEUIOBJECTPROPSW;
+
+  typedef struct tagOLEUIOBJECTPROPSA {
+    DWORD cbStruct;
+    DWORD dwFlags;
+    LPPROPSHEETHEADERA lpPS;
+    DWORD dwObject;
+    LPOLEUIOBJINFOA lpObjInfo;
+    DWORD dwLink;
+    LPOLEUILINKINFOA lpLinkInfo;
+
+    LPOLEUIGNRLPROPSA lpGP;
+    LPOLEUIVIEWPROPSA lpVP;
+    LPOLEUILINKPROPSA lpLP;
+  } OLEUIOBJECTPROPSA,*POLEUIOBJECTPROPSA,*LPOLEUIOBJECTPROPSA;
+
+  STDAPI_(UINT) OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW);
+  STDAPI_(UINT) OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA);
+
+#ifdef UNICODE
+#define tagOLEUIOBJECTPROPS tagOLEUIOBJECTPROPSW
+#define OLEUIOBJECTPROPS OLEUIOBJECTPROPSW
+#define POLEUIOBJECTPROPS POLEUIOBJECTPROPSW
+#define LPOLEUIOBJECTPROPS LPOLEUIOBJECTPROPSW
+#define OleUIObjectProperties OleUIObjectPropertiesW
+#else
+#define tagOLEUIOBJECTPROPS tagOLEUIOBJECTPROPSA
+#define OLEUIOBJECTPROPS OLEUIOBJECTPROPSA
+#define POLEUIOBJECTPROPS POLEUIOBJECTPROPSA
+#define LPOLEUIOBJECTPROPS LPOLEUIOBJECTPROPSA
+#define OleUIObjectProperties OleUIObjectPropertiesA
+#endif
+
+#define OPF_OBJECTISLINK 0x00000001L
+#define OPF_NOFILLDEFAULT 0x00000002L
+#define OPF_SHOWHELP 0x00000004L
+#define OPF_DISABLECONVERT 0x00000008L
+
+#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+10)
+
+#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)
+#define OLEUI_OPERR_OBJINFOINVALID (OLEUI_ERR_STANDARDMAX+20)
+#define OLEUI_OPERR_LINKINFOINVALID (OLEUI_ERR_STANDARDMAX+21)
+
+#define OLEUI_QUERY_GETCLASSID 0xFF00
+#define OLEUI_QUERY_LINKBROKEN 0xFF01
+
+  int __cdecl OleUIPromptUserW(int nTemplate,HWND hwndParent,...);
+  int __cdecl OleUIPromptUserA(int nTemplate,HWND hwndParent,...);
+
+#ifdef UNICODE
+#define OleUIPromptUser OleUIPromptUserW
+#else
+#define OleUIPromptUser OleUIPromptUserA
+#endif
+
+  STDAPI_(WINBOOL) OleUIUpdateLinksW(LPOLEUILINKCONTAINERW lpOleUILinkCntr,HWND hwndParent,LPWSTR lpszTitle,int cLinks);
+  STDAPI_(WINBOOL) OleUIUpdateLinksA(LPOLEUILINKCONTAINERA lpOleUILinkCntr,HWND hwndParent,LPSTR lpszTitle,int cLinks);
+
+#ifdef UNICODE
+#define OleUIUpdateLinks OleUIUpdateLinksW
+#else
+#define OleUIUpdateLinks OleUIUpdateLinksA
+#endif
+
+#pragma pack(pop)
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+#endif