Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _OLEDLG_H_
      7 #define _OLEDLG_H_
      8 
      9 #include <_mingw_unicode.h>
     10 
     11 #ifndef RC_INVOKED
     12 #ifndef __cplusplus
     13 /* #define NONAMELESSUNION */
     14 #endif
     15 
     16 #if defined(_UNICODE) && !defined(UNICODE)
     17 #define UNICODE
     18 #endif
     19 #if defined(UNICODE) && !defined(_UNICODE)
     20 #define _UNICODE
     21 #endif
     22 
     23 #include <windows.h>
     24 #include <shellapi.h>
     25 #include <commdlg.h>
     26 #include <ole2.h>
     27 #include <string.h>
     28 #include <tchar.h>
     29 #endif /* End RC_INVOKED */
     30 
     31 #include <dlgs.h>
     32 
     33 #define IDC_OLEUIHELP 99
     34 
     35 #define IDC_IO_CREATENEW 2100
     36 #define IDC_IO_CREATEFROMFILE 2101
     37 #define IDC_IO_LINKFILE 2102
     38 #define IDC_IO_OBJECTTYPELIST 2103
     39 #define IDC_IO_DISPLAYASICON 2104
     40 #define IDC_IO_CHANGEICON 2105
     41 #define IDC_IO_FILE 2106
     42 #define IDC_IO_FILEDISPLAY 2107
     43 #define IDC_IO_RESULTIMAGE 2108
     44 #define IDC_IO_RESULTTEXT 2109
     45 #define IDC_IO_ICONDISPLAY 2110
     46 #define IDC_IO_OBJECTTYPETEXT 2111
     47 #define IDC_IO_FILETEXT 2112
     48 #define IDC_IO_FILETYPE 2113
     49 #define IDC_IO_INSERTCONTROL 2114
     50 #define IDC_IO_ADDCONTROL 2115
     51 #define IDC_IO_CONTROLTYPELIST 2116
     52 
     53 #define IDC_PS_PASTE 500
     54 #define IDC_PS_PASTELINK 501
     55 #define IDC_PS_SOURCETEXT 502
     56 #define IDC_PS_PASTELIST 503
     57 #define IDC_PS_PASTELINKLIST 504
     58 #define IDC_PS_DISPLAYLIST 505
     59 #define IDC_PS_DISPLAYASICON 506
     60 #define IDC_PS_ICONDISPLAY 507
     61 #define IDC_PS_CHANGEICON 508
     62 #define IDC_PS_RESULTIMAGE 509
     63 #define IDC_PS_RESULTTEXT 510
     64 
     65 #define IDC_CI_GROUP 120
     66 #define IDC_CI_CURRENT 121
     67 #define IDC_CI_CURRENTICON 122
     68 #define IDC_CI_DEFAULT 123
     69 #define IDC_CI_DEFAULTICON 124
     70 #define IDC_CI_FROMFILE 125
     71 #define IDC_CI_FROMFILEEDIT 126
     72 #define IDC_CI_ICONLIST 127
     73 #define IDC_CI_LABEL 128
     74 #define IDC_CI_LABELEDIT 129
     75 #define IDC_CI_BROWSE 130
     76 #define IDC_CI_ICONDISPLAY 131
     77 
     78 #define IDC_CV_OBJECTTYPE 150
     79 #define IDC_CV_DISPLAYASICON 152
     80 #define IDC_CV_CHANGEICON 153
     81 #define IDC_CV_ACTIVATELIST 154
     82 #define IDC_CV_CONVERTTO 155
     83 #define IDC_CV_ACTIVATEAS 156
     84 #define IDC_CV_RESULTTEXT 157
     85 #define IDC_CV_CONVERTLIST 158
     86 #define IDC_CV_ICONDISPLAY 165
     87 
     88 #define IDC_EL_CHANGESOURCE 201
     89 #define IDC_EL_AUTOMATIC 202
     90 #define IDC_EL_CANCELLINK 209
     91 #define IDC_EL_UPDATENOW 210
     92 #define IDC_EL_OPENSOURCE 211
     93 #define IDC_EL_MANUAL 212
     94 #define IDC_EL_LINKSOURCE 216
     95 #define IDC_EL_LINKTYPE 217
     96 #define IDC_EL_LINKSLISTBOX 206
     97 #define IDC_EL_COL1 220
     98 #define IDC_EL_COL2 221
     99 #define IDC_EL_COL3 222
    100 
    101 #define IDC_BZ_RETRY 600
    102 #define IDC_BZ_ICON 601
    103 #define IDC_BZ_MESSAGE1 602
    104 #define IDC_BZ_SWITCHTO 604
    105 
    106 #define IDC_UL_METER 1029
    107 #define IDC_UL_STOP 1030
    108 #define IDC_UL_PERCENT 1031
    109 #define IDC_UL_PROGRESS 1032
    110 
    111 #define IDC_PU_LINKS 900
    112 #define IDC_PU_TEXT 901
    113 #define IDC_PU_CONVERT 902
    114 #define IDC_PU_ICON 908
    115 
    116 #define IDC_GP_OBJECTNAME 1009
    117 #define IDC_GP_OBJECTTYPE 1010
    118 #define IDC_GP_OBJECTSIZE 1011
    119 #define IDC_GP_CONVERT 1013
    120 #define IDC_GP_OBJECTICON 1014
    121 #define IDC_GP_OBJECTLOCATION 1022
    122 
    123 #define IDC_VP_PERCENT 1000
    124 #define IDC_VP_CHANGEICON 1001
    125 #define IDC_VP_EDITABLE 1002
    126 #define IDC_VP_ASICON 1003
    127 #define IDC_VP_RELATIVE 1005
    128 #define IDC_VP_SPIN 1006
    129 #define IDC_VP_SCALETXT 1034
    130 #define IDC_VP_ICONDISPLAY 1021
    131 #define IDC_VP_RESULTIMAGE 1033
    132 
    133 #define IDC_LP_OPENSOURCE 1006
    134 #define IDC_LP_UPDATENOW 1007
    135 #define IDC_LP_BREAKLINK 1008
    136 #define IDC_LP_LINKSOURCE 1012
    137 #define IDC_LP_CHANGESOURCE 1015
    138 #define IDC_LP_AUTOMATIC 1016
    139 #define IDC_LP_MANUAL 1017
    140 #define IDC_LP_DATE 1018
    141 #define IDC_LP_TIME 1019
    142 
    143 #define IDD_INSERTOBJECT 1000
    144 #define IDD_CHANGEICON 1001
    145 #define IDD_CONVERT 1002
    146 #define IDD_PASTESPECIAL 1003
    147 #define IDD_EDITLINKS 1004
    148 #define IDD_BUSY 1006
    149 #define IDD_UPDATELINKS 1007
    150 #define IDD_CHANGESOURCE 1009
    151 #define IDD_INSERTFILEBROWSE 1010
    152 #define IDD_CHANGEICONBROWSE 1011
    153 #define IDD_CONVERTONLY 1012
    154 #define IDD_CHANGESOURCE4 1013
    155 #define IDD_GNRLPROPS 1100
    156 #define IDD_VIEWPROPS 1101
    157 #define IDD_LINKPROPS 1102
    158 #define IDD_CONVERT4 1103
    159 #define IDD_CONVERTONLY4 1104
    160 #define IDD_EDITLINKS4 1105
    161 #define IDD_GNRLPROPS4 1106
    162 #define IDD_LINKPROPS4 1107
    163 #define IDD_PASTESPECIAL4 1108
    164 
    165 #define IDD_CANNOTUPDATELINK 1008
    166 #define IDD_LINKSOURCEUNAVAILABLE 1020
    167 #define IDD_SERVERNOTFOUND 1023
    168 #define IDD_OUTOFMEMORY 1024
    169 #define IDD_SERVERNOTREGW 1021
    170 #define IDD_LINKTYPECHANGEDW 1022
    171 #define IDD_SERVERNOTREGA 1025
    172 #define IDD_LINKTYPECHANGEDA 1026
    173 
    174 #define IDD_SERVERNOTREG __MINGW_NAME_AW(IDD_SERVERNOTREG)
    175 #define IDD_LINKTYPECHANGED __MINGW_NAME_AW(IDD_LINKTYPECHANGED)
    176 
    177 #ifndef RC_INVOKED
    178 
    179 #ifdef __cplusplus
    180 extern "C" {
    181 #endif
    182 
    183 #pragma pack(push,8)
    184 
    185 #define OLESTDDELIM TEXT("\\")
    186 
    187   typedef UINT (CALLBACK *LPFNOLEUIHOOK)(HWND,UINT,WPARAM,LPARAM);
    188 
    189 #define SZOLEUI_MSG_HELP TEXT("OLEUI_MSG_HELP")
    190 #define SZOLEUI_MSG_ENDDIALOG TEXT("OLEUI_MSG_ENDDIALOG")
    191 #define SZOLEUI_MSG_BROWSE TEXT("OLEUI_MSG_BROWSE")
    192 #define SZOLEUI_MSG_CHANGEICON TEXT("OLEUI_MSG_CHANGEICON")
    193 #define SZOLEUI_MSG_CLOSEBUSYDIALOG TEXT("OLEUI_MSG_CLOSEBUSYDIALOG")
    194 #define SZOLEUI_MSG_CONVERT TEXT("OLEUI_MSG_CONVERT")
    195 #define SZOLEUI_MSG_CHANGESOURCE TEXT("OLEUI_MSG_CHANGESOURCE")
    196 #define SZOLEUI_MSG_ADDCONTROL TEXT("OLEUI_MSG_ADDCONTROL")
    197 #define SZOLEUI_MSG_BROWSE_OFN TEXT("OLEUI_MSG_BROWSE_OFN")
    198 
    199 #define ID_BROWSE_CHANGEICON 1
    200 #define ID_BROWSE_INSERTFILE 2
    201 #define ID_BROWSE_ADDCONTROL 3
    202 #define ID_BROWSE_CHANGESOURCE 4
    203 
    204 #define OLEUI_FALSE 0
    205 #define OLEUI_SUCCESS 1
    206 #define OLEUI_OK 1
    207 #define OLEUI_CANCEL 2
    208 
    209 #define OLEUI_ERR_STANDARDMIN 100
    210 #define OLEUI_ERR_OLEMEMALLOC 100
    211 #define OLEUI_ERR_STRUCTURENULL 101
    212 #define OLEUI_ERR_STRUCTUREINVALID 102
    213 #define OLEUI_ERR_CBSTRUCTINCORRECT 103
    214 #define OLEUI_ERR_HWNDOWNERINVALID 104
    215 #define OLEUI_ERR_LPSZCAPTIONINVALID 105
    216 #define OLEUI_ERR_LPFNHOOKINVALID 106
    217 #define OLEUI_ERR_HINSTANCEINVALID 107
    218 #define OLEUI_ERR_LPSZTEMPLATEINVALID 108
    219 #define OLEUI_ERR_HRESOURCEINVALID 109
    220 
    221 #define OLEUI_ERR_FINDTEMPLATEFAILURE 110
    222 #define OLEUI_ERR_LOADTEMPLATEFAILURE 111
    223 #define OLEUI_ERR_DIALOGFAILURE 112
    224 #define OLEUI_ERR_LOCALMEMALLOC 113
    225 #define OLEUI_ERR_GLOBALMEMALLOC 114
    226 #define OLEUI_ERR_LOADSTRING 115
    227 
    228 #define OLEUI_ERR_STANDARDMAX 116
    229 
    230   STDAPI_(WINBOOL) OleUIAddVerbMenuW(LPOLEOBJECT lpOleObj,LPCWSTR lpszShortType,HMENU hMenu,UINT uPos,UINT uIDVerbMin,UINT uIDVerbMax,WINBOOL bAddConvert,UINT idConvert,HMENU *lphMenu);
    231   STDAPI_(WINBOOL) OleUIAddVerbMenuA(LPOLEOBJECT lpOleObj,LPCSTR lpszShortType,HMENU hMenu,UINT uPos,UINT uIDVerbMin,UINT uIDVerbMax,WINBOOL bAddConvert,UINT idConvert,HMENU *lphMenu);
    232 
    233 #define OleUIAddVerbMenu __MINGW_NAME_AW(OleUIAddVerbMenu)
    234 
    235   typedef struct tagOLEUIINSERTOBJECTW {
    236     DWORD cbStruct;
    237     DWORD dwFlags;
    238     HWND hWndOwner;
    239     LPCWSTR lpszCaption;
    240     LPFNOLEUIHOOK lpfnHook;
    241     LPARAM lCustData;
    242     HINSTANCE hInstance;
    243     LPCWSTR lpszTemplate;
    244     HRSRC hResource;
    245     CLSID clsid;
    246     LPWSTR lpszFile;
    247     UINT cchFile;
    248     UINT cClsidExclude;
    249     LPCLSID lpClsidExclude;
    250     IID iid;
    251     DWORD oleRender;
    252     LPFORMATETC lpFormatEtc;
    253     LPOLECLIENTSITE lpIOleClientSite;
    254     LPSTORAGE lpIStorage;
    255     LPVOID *ppvObj;
    256     SCODE sc;
    257     HGLOBAL hMetaPict;
    258   } OLEUIINSERTOBJECTW,*POLEUIINSERTOBJECTW,*LPOLEUIINSERTOBJECTW;
    259 
    260   typedef struct tagOLEUIINSERTOBJECTA {
    261     DWORD cbStruct;
    262     DWORD dwFlags;
    263     HWND hWndOwner;
    264     LPCSTR lpszCaption;
    265     LPFNOLEUIHOOK lpfnHook;
    266     LPARAM lCustData;
    267     HINSTANCE hInstance;
    268     LPCSTR lpszTemplate;
    269     HRSRC hResource;
    270     CLSID clsid;
    271     LPSTR lpszFile;
    272     UINT cchFile;
    273     UINT cClsidExclude;
    274     LPCLSID lpClsidExclude;
    275     IID iid;
    276     DWORD oleRender;
    277     LPFORMATETC lpFormatEtc;
    278     LPOLECLIENTSITE lpIOleClientSite;
    279     LPSTORAGE lpIStorage;
    280     LPVOID *ppvObj;
    281     SCODE sc;
    282     HGLOBAL hMetaPict;
    283   } OLEUIINSERTOBJECTA,*POLEUIINSERTOBJECTA,*LPOLEUIINSERTOBJECTA;
    284 
    285   STDAPI_(UINT) OleUIInsertObjectW(LPOLEUIINSERTOBJECTW);
    286   STDAPI_(UINT) OleUIInsertObjectA(LPOLEUIINSERTOBJECTA);
    287 
    288 #define tagOLEUIINSERTOBJECT __MINGW_NAME_AW(tagOLEUIINSERTOBJECT)
    289 
    290 #define OLEUIINSERTOBJECT __MINGW_NAME_AW(OLEUIINSERTOBJECT)
    291 #define POLEUIINSERTOBJECT __MINGW_NAME_AW(POLEUIINSERTOBJECT)
    292 #define LPOLEUIINSERTOBJECT __MINGW_NAME_AW(LPOLEUIINSERTOBJECT)
    293 
    294 #define OleUIInsertObject __MINGW_NAME_AW(OleUIInsertObject)
    295 
    296 #define IOF_SHOWHELP __MSABI_LONG(0x00000001)
    297 #define IOF_SELECTCREATENEW __MSABI_LONG(0x00000002)
    298 #define IOF_SELECTCREATEFROMFILE __MSABI_LONG(0x00000004)
    299 #define IOF_CHECKLINK __MSABI_LONG(0x00000008)
    300 #define IOF_CHECKDISPLAYASICON __MSABI_LONG(0x00000010)
    301 #define IOF_CREATENEWOBJECT __MSABI_LONG(0x00000020)
    302 #define IOF_CREATEFILEOBJECT __MSABI_LONG(0x00000040)
    303 #define IOF_CREATELINKOBJECT __MSABI_LONG(0x00000080)
    304 #define IOF_DISABLELINK __MSABI_LONG(0x00000100)
    305 #define IOF_VERIFYSERVERSEXIST __MSABI_LONG(0x00000200)
    306 #define IOF_DISABLEDISPLAYASICON __MSABI_LONG(0x00000400)
    307 #define IOF_HIDECHANGEICON __MSABI_LONG(0x00000800)
    308 #define IOF_SHOWINSERTCONTROL __MSABI_LONG(0x00001000)
    309 #define IOF_SELECTCREATECONTROL __MSABI_LONG(0x00002000)
    310 
    311 #define OLEUI_IOERR_LPSZFILEINVALID (OLEUI_ERR_STANDARDMAX+0)
    312 #define OLEUI_IOERR_LPSZLABELINVALID (OLEUI_ERR_STANDARDMAX+1)
    313 #define OLEUI_IOERR_HICONINVALID (OLEUI_ERR_STANDARDMAX+2)
    314 #define OLEUI_IOERR_LPFORMATETCINVALID (OLEUI_ERR_STANDARDMAX+3)
    315 #define OLEUI_IOERR_PPVOBJINVALID (OLEUI_ERR_STANDARDMAX+4)
    316 #define OLEUI_IOERR_LPIOLECLIENTSITEINVALID (OLEUI_ERR_STANDARDMAX+5)
    317 #define OLEUI_IOERR_LPISTORAGEINVALID (OLEUI_ERR_STANDARDMAX+6)
    318 #define OLEUI_IOERR_SCODEHASERROR (OLEUI_ERR_STANDARDMAX+7)
    319 #define OLEUI_IOERR_LPCLSIDEXCLUDEINVALID (OLEUI_ERR_STANDARDMAX+8)
    320 #define OLEUI_IOERR_CCHFILEINVALID (OLEUI_ERR_STANDARDMAX+9)
    321 
    322   typedef enum tagOLEUIPASTEFLAG {
    323     OLEUIPASTE_ENABLEICON = 2048,OLEUIPASTE_PASTEONLY = 0,OLEUIPASTE_PASTE = 512,OLEUIPASTE_LINKANYTYPE = 1024,OLEUIPASTE_LINKTYPE1 = 1,
    324     OLEUIPASTE_LINKTYPE2 = 2,OLEUIPASTE_LINKTYPE3 = 4,OLEUIPASTE_LINKTYPE4 = 8,OLEUIPASTE_LINKTYPE5 = 16,OLEUIPASTE_LINKTYPE6 = 32,
    325     OLEUIPASTE_LINKTYPE7 = 64,OLEUIPASTE_LINKTYPE8 = 128
    326   } OLEUIPASTEFLAG;
    327 
    328   typedef struct tagOLEUIPASTEENTRYW {
    329     FORMATETC fmtetc;
    330     LPCWSTR lpstrFormatName;
    331     LPCWSTR lpstrResultText;
    332     DWORD dwFlags;
    333     DWORD dwScratchSpace;
    334   } OLEUIPASTEENTRYW,*POLEUIPASTEENTRYW,*LPOLEUIPASTEENTRYW;
    335 
    336   typedef struct tagOLEUIPASTEENTRYA {
    337     FORMATETC fmtetc;
    338     LPCSTR lpstrFormatName;
    339     LPCSTR lpstrResultText;
    340     DWORD dwFlags;
    341     DWORD dwScratchSpace;
    342   } OLEUIPASTEENTRYA,*POLEUIPASTEENTRYA,*LPOLEUIPASTEENTRYA;
    343 
    344 #define tagOLEUIPASTEENTRY __MINGW_NAME_AW(tagOLEUIPASTEENTRY)
    345 
    346 #define OLEUIPASTEENTRY __MINGW_NAME_AW(OLEUIPASTEENTRY)
    347 #define POLEUIPASTEENTRY __MINGW_NAME_AW(POLEUIPASTEENTRY)
    348 #define LPOLEUIPASTEENTRY __MINGW_NAME_AW(LPOLEUIPASTEENTRY)
    349 
    350 #define PS_MAXLINKTYPES 8
    351 
    352   typedef struct tagOLEUIPASTESPECIALW {
    353     DWORD cbStruct;
    354     DWORD dwFlags;
    355     HWND hWndOwner;
    356     LPCWSTR lpszCaption;
    357     LPFNOLEUIHOOK lpfnHook;
    358     LPARAM lCustData;
    359     HINSTANCE hInstance;
    360     LPCWSTR lpszTemplate;
    361     HRSRC hResource;
    362     LPDATAOBJECT lpSrcDataObj;
    363     LPOLEUIPASTEENTRYW arrPasteEntries;
    364     int cPasteEntries;
    365     UINT *arrLinkTypes;
    366     int cLinkTypes;
    367     UINT cClsidExclude;
    368     LPCLSID lpClsidExclude;
    369     int nSelectedIndex;
    370     WINBOOL fLink;
    371     HGLOBAL hMetaPict;
    372     SIZEL sizel;
    373   } OLEUIPASTESPECIALW,*POLEUIPASTESPECIALW,*LPOLEUIPASTESPECIALW;
    374 
    375   typedef struct tagOLEUIPASTESPECIALA {
    376     DWORD cbStruct;
    377     DWORD dwFlags;
    378     HWND hWndOwner;
    379     LPCSTR lpszCaption;
    380     LPFNOLEUIHOOK lpfnHook;
    381     LPARAM lCustData;
    382     HINSTANCE hInstance;
    383     LPCSTR lpszTemplate;
    384     HRSRC hResource;
    385     LPDATAOBJECT lpSrcDataObj;
    386     LPOLEUIPASTEENTRYA arrPasteEntries;
    387     int cPasteEntries;
    388     UINT *arrLinkTypes;
    389     int cLinkTypes;
    390     UINT cClsidExclude;
    391     LPCLSID lpClsidExclude;
    392     int nSelectedIndex;
    393     WINBOOL fLink;
    394     HGLOBAL hMetaPict;
    395     SIZEL sizel;
    396   } OLEUIPASTESPECIALA,*POLEUIPASTESPECIALA,*LPOLEUIPASTESPECIALA;
    397 
    398 #define tagOLEUIPASTESPECIAL __MINGW_NAME_AW(tagOLEUIPASTESPECIAL)
    399 
    400 #define OLEUIPASTESPECIAL __MINGW_NAME_AW(OLEUIPASTESPECIAL)
    401 #define POLEUIPASTESPECIAL __MINGW_NAME_AW(POLEUIPASTESPECIAL)
    402 #define LPOLEUIPASTESPECIAL __MINGW_NAME_AW(LPOLEUIPASTESPECIAL)
    403 
    404   STDAPI_(UINT) OleUIPasteSpecialW(LPOLEUIPASTESPECIALW);
    405   STDAPI_(UINT) OleUIPasteSpecialA(LPOLEUIPASTESPECIALA);
    406 
    407 #define OleUIPasteSpecial __MINGW_NAME_AW(OleUIPasteSpecial)
    408 
    409 #define PSF_SHOWHELP __MSABI_LONG(0x00000001)
    410 #define PSF_SELECTPASTE __MSABI_LONG(0x00000002)
    411 #define PSF_SELECTPASTELINK __MSABI_LONG(0x00000004)
    412 
    413 #define PSF_CHECKDISPLAYASICON __MSABI_LONG(0x00000008)
    414 #define PSF_DISABLEDISPLAYASICON __MSABI_LONG(0x00000010)
    415 #define PSF_HIDECHANGEICON __MSABI_LONG(0x00000020)
    416 #define PSF_STAYONCLIPBOARDCHANGE __MSABI_LONG(0x00000040)
    417 #define PSF_NOREFRESHDATAOBJECT __MSABI_LONG(0x00000080)
    418 
    419 #define OLEUI_IOERR_SRCDATAOBJECTINVALID (OLEUI_ERR_STANDARDMAX+0)
    420 #define OLEUI_IOERR_ARRPASTEENTRIESINVALID (OLEUI_ERR_STANDARDMAX+1)
    421 #define OLEUI_IOERR_ARRLINKTYPESINVALID (OLEUI_ERR_STANDARDMAX+2)
    422 #define OLEUI_PSERR_CLIPBOARDCHANGED (OLEUI_ERR_STANDARDMAX+3)
    423 #define OLEUI_PSERR_GETCLIPBOARDFAILED (OLEUI_ERR_STANDARDMAX+4)
    424 
    425 #undef INTERFACE
    426 #define INTERFACE IOleUILinkContainerW
    427 
    428   DECLARE_INTERFACE_(IOleUILinkContainerW,IUnknown) {
    429     STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE;
    430     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    431     STDMETHOD_(ULONG,Release)(THIS) PURE;
    432     STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE;
    433     STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink,DWORD dwUpdateOpt) PURE;
    434     STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink,DWORD *lpdwUpdateOpt) PURE;
    435     STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink,LPWSTR lpszDisplayName,ULONG lenFileName,ULONG *pchEaten,WINBOOL fValidateSource) PURE;
    436     STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink,LPWSTR *lplpszDisplayName,ULONG *lplenFileName,LPWSTR *lplpszFullLinkType,LPWSTR *lplpszShortLinkType,WINBOOL *lpfSourceAvailable,WINBOOL *lpfIsSelected) PURE;
    437     STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE;
    438     STDMETHOD(UpdateLink)(THIS_ DWORD dwLink,WINBOOL fErrorMessage,WINBOOL fReserved) PURE;
    439     STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
    440   };
    441 
    442   typedef IOleUILinkContainerW *LPOLEUILINKCONTAINERW;
    443 
    444 #undef INTERFACE
    445 #define INTERFACE IOleUILinkContainerA
    446 
    447   DECLARE_INTERFACE_(IOleUILinkContainerA,IUnknown) {
    448     STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE;
    449     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    450     STDMETHOD_(ULONG,Release)(THIS) PURE;
    451     STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE;
    452     STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink,DWORD dwUpdateOpt) PURE;
    453     STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink,DWORD *lpdwUpdateOpt) PURE;
    454     STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink,LPSTR lpszDisplayName,ULONG lenFileName,ULONG *pchEaten,WINBOOL fValidateSource) PURE;
    455     STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink,LPSTR *lplpszDisplayName,ULONG *lplenFileName,LPSTR *lplpszFullLinkType,LPSTR *lplpszShortLinkType,WINBOOL *lpfSourceAvailable,WINBOOL *lpfIsSelected) PURE;
    456     STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE;
    457     STDMETHOD(UpdateLink)(THIS_ DWORD dwLink,WINBOOL fErrorMessage,WINBOOL fReserved) PURE;
    458     STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
    459   };
    460 
    461   typedef IOleUILinkContainerA *LPOLEUILINKCONTAINERA;
    462 
    463 #define IOleUILinkContainer __MINGW_NAME_AW(IOleUILinkContainer)
    464 #define LPOLEUILINKCONTAINER __MINGW_NAME_AW(LPOLEUILINKCONTAINER)
    465 
    466 #define IOleUILinkContainerVtbl __MINGW_NAME_AW_EXT(IOleUILinkContainer,Vtbl)
    467 
    468   typedef struct tagOLEUIEDITLINKSW {
    469     DWORD cbStruct;
    470     DWORD dwFlags;
    471     HWND hWndOwner;
    472     LPCWSTR lpszCaption;
    473     LPFNOLEUIHOOK lpfnHook;
    474     LPARAM lCustData;
    475     HINSTANCE hInstance;
    476     LPCWSTR lpszTemplate;
    477     HRSRC hResource;
    478     LPOLEUILINKCONTAINERW lpOleUILinkContainer;
    479   } OLEUIEDITLINKSW,*POLEUIEDITLINKSW,*LPOLEUIEDITLINKSW;
    480 
    481   typedef struct tagOLEUIEDITLINKSA {
    482     DWORD cbStruct;
    483     DWORD dwFlags;
    484     HWND hWndOwner;
    485     LPCSTR lpszCaption;
    486     LPFNOLEUIHOOK lpfnHook;
    487     LPARAM lCustData;
    488     HINSTANCE hInstance;
    489     LPCSTR lpszTemplate;
    490     HRSRC hResource;
    491     LPOLEUILINKCONTAINERA lpOleUILinkContainer;
    492   } OLEUIEDITLINKSA,*POLEUIEDITLINKSA,*LPOLEUIEDITLINKSA;
    493 
    494 #define tagOLEUIEDITLINKS __MINGW_NAME_AW(tagOLEUIEDITLINKS)
    495 
    496 #define OLEUIEDITLINKS __MINGW_NAME_AW(OLEUIEDITLINKS)
    497 #define POLEUIEDITLINKS __MINGW_NAME_AW(POLEUIEDITLINKS)
    498 #define LPOLEUIEDITLINKS __MINGW_NAME_AW(LPOLEUIEDITLINKS)
    499 
    500 #define OLEUI_ELERR_LINKCNTRNULL (OLEUI_ERR_STANDARDMAX+0)
    501 #define OLEUI_ELERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+1)
    502 
    503   STDAPI_(UINT) OleUIEditLinksW(LPOLEUIEDITLINKSW);
    504   STDAPI_(UINT) OleUIEditLinksA(LPOLEUIEDITLINKSA);
    505 
    506 #define OleUIEditLinks __MINGW_NAME_AW(OleUIEditLinks)
    507 
    508 #define ELF_SHOWHELP __MSABI_LONG(0x00000001)
    509 #define ELF_DISABLEUPDATENOW __MSABI_LONG(0x00000002)
    510 #define ELF_DISABLEOPENSOURCE __MSABI_LONG(0x00000004)
    511 #define ELF_DISABLECHANGESOURCE __MSABI_LONG(0x00000008)
    512 #define ELF_DISABLECANCELLINK __MSABI_LONG(0x00000010)
    513 
    514   typedef struct tagOLEUICHANGEICONW {
    515     DWORD cbStruct;
    516     DWORD dwFlags;
    517     HWND hWndOwner;
    518     LPCWSTR lpszCaption;
    519     LPFNOLEUIHOOK lpfnHook;
    520     LPARAM lCustData;
    521     HINSTANCE hInstance;
    522     LPCWSTR lpszTemplate;
    523     HRSRC hResource;
    524     HGLOBAL hMetaPict;
    525     CLSID clsid;
    526     WCHAR szIconExe[MAX_PATH];
    527     int cchIconExe;
    528   } OLEUICHANGEICONW,*POLEUICHANGEICONW,*LPOLEUICHANGEICONW;
    529 
    530   typedef struct tagOLEUICHANGEICONA {
    531     DWORD cbStruct;
    532     DWORD dwFlags;
    533     HWND hWndOwner;
    534     LPCSTR lpszCaption;
    535     LPFNOLEUIHOOK lpfnHook;
    536     LPARAM lCustData;
    537     HINSTANCE hInstance;
    538     LPCSTR lpszTemplate;
    539     HRSRC hResource;
    540     HGLOBAL hMetaPict;
    541     CLSID clsid;
    542     CHAR szIconExe[MAX_PATH];
    543     int cchIconExe;
    544   } OLEUICHANGEICONA,*POLEUICHANGEICONA,*LPOLEUICHANGEICONA;
    545 
    546   STDAPI_(UINT) OleUIChangeIconW(LPOLEUICHANGEICONW);
    547   STDAPI_(UINT) OleUIChangeIconA(LPOLEUICHANGEICONA);
    548 
    549 
    550 #define tagOLEUICHANGEICON __MINGW_NAME_AW(tagOLEUICHANGEICON)
    551 
    552 #define OLEUICHANGEICON __MINGW_NAME_AW(OLEUICHANGEICON)
    553 #define POLEUICHANGEICON __MINGW_NAME_AW(POLEUICHANGEICON)
    554 #define LPOLEUICHANGEICON __MINGW_NAME_AW(LPOLEUICHANGEICON)
    555 
    556 #define OleUIChangeIcon __MINGW_NAME_AW(OleUIChangeIcon)
    557 
    558 #define CIF_SHOWHELP __MSABI_LONG(0x00000001)
    559 #define CIF_SELECTCURRENT __MSABI_LONG(0x00000002)
    560 #define CIF_SELECTDEFAULT __MSABI_LONG(0x00000004)
    561 #define CIF_SELECTFROMFILE __MSABI_LONG(0x00000008)
    562 #define CIF_USEICONEXE __MSABI_LONG(0x00000010)
    563 
    564 #define OLEUI_CIERR_MUSTHAVECLSID (OLEUI_ERR_STANDARDMAX+0)
    565 #define OLEUI_CIERR_MUSTHAVECURRENTMETAFILE (OLEUI_ERR_STANDARDMAX+1)
    566 #define OLEUI_CIERR_SZICONEXEINVALID (OLEUI_ERR_STANDARDMAX+2)
    567 
    568 #define PROP_HWND_CHGICONDLG TEXT("HWND_CIDLG")
    569 
    570   typedef struct tagOLEUICONVERTW {
    571     DWORD cbStruct;
    572     DWORD dwFlags;
    573     HWND hWndOwner;
    574     LPCWSTR lpszCaption;
    575     LPFNOLEUIHOOK lpfnHook;
    576     LPARAM lCustData;
    577     HINSTANCE hInstance;
    578     LPCWSTR lpszTemplate;
    579     HRSRC hResource;
    580     CLSID clsid;
    581     CLSID clsidConvertDefault;
    582     CLSID clsidActivateDefault;
    583     CLSID clsidNew;
    584     DWORD dvAspect;
    585     WORD wFormat;
    586     WINBOOL fIsLinkedObject;
    587     HGLOBAL hMetaPict;
    588     LPWSTR lpszUserType;
    589     WINBOOL fObjectsIconChanged;
    590     LPWSTR lpszDefLabel;
    591     UINT cClsidExclude;
    592     LPCLSID lpClsidExclude;
    593   } OLEUICONVERTW,*POLEUICONVERTW,*LPOLEUICONVERTW;
    594 
    595   typedef struct tagOLEUICONVERTA {
    596     DWORD cbStruct;
    597     DWORD dwFlags;
    598     HWND hWndOwner;
    599     LPCSTR lpszCaption;
    600     LPFNOLEUIHOOK lpfnHook;
    601     LPARAM lCustData;
    602     HINSTANCE hInstance;
    603     LPCSTR lpszTemplate;
    604     HRSRC hResource;
    605     CLSID clsid;
    606     CLSID clsidConvertDefault;
    607     CLSID clsidActivateDefault;
    608     CLSID clsidNew;
    609     DWORD dvAspect;
    610     WORD wFormat;
    611     WINBOOL fIsLinkedObject;
    612     HGLOBAL hMetaPict;
    613     LPSTR lpszUserType;
    614     WINBOOL fObjectsIconChanged;
    615     LPSTR lpszDefLabel;
    616     UINT cClsidExclude;
    617     LPCLSID lpClsidExclude;
    618   } OLEUICONVERTA,*POLEUICONVERTA,*LPOLEUICONVERTA;
    619 
    620   STDAPI_(UINT) OleUIConvertW(LPOLEUICONVERTW);
    621   STDAPI_(UINT) OleUIConvertA(LPOLEUICONVERTA);
    622 
    623 #define tagOLEUICONVERT __MINGW_NAME_AW(tagOLEUICONVERT)
    624 
    625 #define OLEUICONVERT __MINGW_NAME_AW(OLEUICONVERT)
    626 #define POLEUICONVERT __MINGW_NAME_AW(POLEUICONVERT)
    627 #define LPOLEUICONVERT __MINGW_NAME_AW(LPOLEUICONVERT)
    628 
    629 #define OleUIConvert __MINGW_NAME_AW(OleUIConvert)
    630 
    631   STDAPI_(WINBOOL) OleUICanConvertOrActivateAs(REFCLSID rClsid,WINBOOL fIsLinkedObject,WORD wFormat);
    632 
    633 #define CF_SHOWHELPBUTTON __MSABI_LONG(0x00000001)
    634 #define CF_SETCONVERTDEFAULT __MSABI_LONG(0x00000002)
    635 #define CF_SETACTIVATEDEFAULT __MSABI_LONG(0x00000004)
    636 #define CF_SELECTCONVERTTO __MSABI_LONG(0x00000008)
    637 #define CF_SELECTACTIVATEAS __MSABI_LONG(0x00000010)
    638 #define CF_DISABLEDISPLAYASICON __MSABI_LONG(0x00000020)
    639 #define CF_DISABLEACTIVATEAS __MSABI_LONG(0x00000040)
    640 #define CF_HIDECHANGEICON __MSABI_LONG(0x00000080)
    641 #define CF_CONVERTONLY __MSABI_LONG(0x00000100)
    642 
    643 #define OLEUI_CTERR_CLASSIDINVALID (OLEUI_ERR_STANDARDMAX+1)
    644 #define OLEUI_CTERR_DVASPECTINVALID (OLEUI_ERR_STANDARDMAX+2)
    645 #define OLEUI_CTERR_CBFORMATINVALID (OLEUI_ERR_STANDARDMAX+3)
    646 #define OLEUI_CTERR_HMETAPICTINVALID (OLEUI_ERR_STANDARDMAX+4)
    647 #define OLEUI_CTERR_STRINGINVALID (OLEUI_ERR_STANDARDMAX+5)
    648 
    649   typedef struct tagOLEUIBUSYW {
    650     DWORD cbStruct;
    651     DWORD dwFlags;
    652     HWND hWndOwner;
    653     LPCWSTR lpszCaption;
    654     LPFNOLEUIHOOK lpfnHook;
    655     LPARAM lCustData;
    656     HINSTANCE hInstance;
    657     LPCWSTR lpszTemplate;
    658     HRSRC hResource;
    659     HTASK hTask;
    660     HWND *lphWndDialog;
    661   } OLEUIBUSYW,*POLEUIBUSYW,*LPOLEUIBUSYW;
    662 
    663   typedef struct tagOLEUIBUSYA {
    664     DWORD cbStruct;
    665     DWORD dwFlags;
    666     HWND hWndOwner;
    667     LPCSTR lpszCaption;
    668     LPFNOLEUIHOOK lpfnHook;
    669     LPARAM lCustData;
    670     HINSTANCE hInstance;
    671     LPCSTR lpszTemplate;
    672     HRSRC hResource;
    673     HTASK hTask;
    674     HWND *lphWndDialog;
    675   } OLEUIBUSYA,*POLEUIBUSYA,*LPOLEUIBUSYA;
    676 
    677   STDAPI_(UINT) OleUIBusyW(LPOLEUIBUSYW);
    678   STDAPI_(UINT) OleUIBusyA(LPOLEUIBUSYA);
    679 
    680 #define tagOLEUIBUSY __MINGW_NAME_AW(tagOLEUIBUSY)
    681 
    682 #define OLEUIBUSY __MINGW_NAME_AW(OLEUIBUSY)
    683 #define POLEUIBUSY __MINGW_NAME_AW(POLEUIBUSY)
    684 #define LPOLEUIBUSY __MINGW_NAME_AW(LPOLEUIBUSY)
    685 
    686 #define OleUIBusy __MINGW_NAME_AW(OleUIBusy)
    687 
    688 #define BZ_DISABLECANCELBUTTON __MSABI_LONG(0x00000001)
    689 #define BZ_DISABLESWITCHTOBUTTON __MSABI_LONG(0x00000002)
    690 #define BZ_DISABLERETRYBUTTON __MSABI_LONG(0x00000004)
    691 
    692 #define BZ_NOTRESPONDINGDIALOG __MSABI_LONG(0x00000008)
    693 
    694 #define OLEUI_BZERR_HTASKINVALID (OLEUI_ERR_STANDARDMAX+0)
    695 #define OLEUI_BZ_SWITCHTOSELECTED (OLEUI_ERR_STANDARDMAX+1)
    696 #define OLEUI_BZ_RETRYSELECTED (OLEUI_ERR_STANDARDMAX+2)
    697 #define OLEUI_BZ_CALLUNBLOCKED (OLEUI_ERR_STANDARDMAX+3)
    698 
    699   typedef struct tagOLEUICHANGESOURCEW {
    700     DWORD cbStruct;
    701     DWORD dwFlags;
    702     HWND hWndOwner;
    703     LPCWSTR lpszCaption;
    704     LPFNOLEUIHOOK lpfnHook;
    705     LPARAM lCustData;
    706     HINSTANCE hInstance;
    707     LPCWSTR lpszTemplate;
    708     HRSRC hResource;
    709     OPENFILENAMEW *lpOFN;
    710     DWORD dwReserved1[4];
    711     LPOLEUILINKCONTAINERW lpOleUILinkContainer;
    712     DWORD dwLink;
    713     LPWSTR lpszDisplayName;
    714     ULONG nFileLength;
    715     LPWSTR lpszFrom;
    716     LPWSTR lpszTo;
    717   } OLEUICHANGESOURCEW,*POLEUICHANGESOURCEW,*LPOLEUICHANGESOURCEW;
    718 
    719   typedef struct tagOLEUICHANGESOURCEA {
    720     DWORD cbStruct;
    721     DWORD dwFlags;
    722     HWND hWndOwner;
    723     LPCSTR lpszCaption;
    724     LPFNOLEUIHOOK lpfnHook;
    725     LPARAM lCustData;
    726     HINSTANCE hInstance;
    727     LPCSTR lpszTemplate;
    728     HRSRC hResource;
    729     OPENFILENAMEA *lpOFN;
    730     DWORD dwReserved1[4];
    731     LPOLEUILINKCONTAINERA lpOleUILinkContainer;
    732     DWORD dwLink;
    733     LPSTR lpszDisplayName;
    734     ULONG nFileLength;
    735     LPSTR lpszFrom;
    736     LPSTR lpszTo;
    737   } OLEUICHANGESOURCEA,*POLEUICHANGESOURCEA,*LPOLEUICHANGESOURCEA;
    738 
    739   STDAPI_(UINT) OleUIChangeSourceW(LPOLEUICHANGESOURCEW);
    740   STDAPI_(UINT) OleUIChangeSourceA(LPOLEUICHANGESOURCEA);
    741 
    742 #define tagOLEUICHANGESOURCE __MINGW_NAME_AW(tagOLEUICHANGESOURCE)
    743 
    744 #define OLEUICHANGESOURCE __MINGW_NAME_AW(OLEUICHANGESOURCE)
    745 #define POLEUICHANGESOURCE __MINGW_NAME_AW(POLEUICHANGESOURCE)
    746 #define LPOLEUICHANGESOURCE __MINGW_NAME_AW(LPOLEUICHANGESOURCE)
    747 
    748 #define OleUIChangeSource __MINGW_NAME_AW(OleUIChangeSource)
    749 
    750 #define CSF_SHOWHELP __MSABI_LONG(0x00000001)
    751 #define CSF_VALIDSOURCE __MSABI_LONG(0x00000002)
    752 #define CSF_ONLYGETSOURCE __MSABI_LONG(0x00000004)
    753 #define CSF_EXPLORER __MSABI_LONG(0x00000008)
    754 
    755 #define OLEUI_CSERR_LINKCNTRNULL (OLEUI_ERR_STANDARDMAX+0)
    756 #define OLEUI_CSERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+1)
    757 #define OLEUI_CSERR_FROMNOTNULL (OLEUI_ERR_STANDARDMAX+2)
    758 #define OLEUI_CSERR_TONOTNULL (OLEUI_ERR_STANDARDMAX+3)
    759 #define OLEUI_CSERR_SOURCENULL (OLEUI_ERR_STANDARDMAX+4)
    760 #define OLEUI_CSERR_SOURCEINVALID (OLEUI_ERR_STANDARDMAX+5)
    761 #define OLEUI_CSERR_SOURCEPARSERROR (OLEUI_ERR_STANDARDMAX+6)
    762 #define OLEUI_CSERR_SOURCEPARSEERROR (OLEUI_ERR_STANDARDMAX+6)
    763 
    764 #undef INTERFACE
    765 #define INTERFACE IOleUIObjInfoW
    766 
    767   DECLARE_INTERFACE_(IOleUIObjInfoW,IUnknown) {
    768     STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE;
    769     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    770     STDMETHOD_(ULONG,Release)(THIS) PURE;
    771     STDMETHOD(GetObjectInfo)(THIS_ DWORD dwObject,DWORD *lpdwObjSize,LPWSTR *lplpszLabel,LPWSTR *lplpszType,LPWSTR *lplpszShortType,LPWSTR *lplpszLocation) PURE;
    772     STDMETHOD(GetConvertInfo)(THIS_ DWORD dwObject,CLSID *lpClassID,WORD *lpwFormat,CLSID *lpConvertDefaultClassID,LPCLSID *lplpClsidExclude,UINT *lpcClsidExclude) PURE;
    773     STDMETHOD(ConvertObject)(THIS_ DWORD dwObject,REFCLSID clsidNew) PURE;
    774     STDMETHOD(GetViewInfo)(THIS_ DWORD dwObject,HGLOBAL *phMetaPict,DWORD *pdvAspect,int *pnCurrentScale) PURE;
    775     STDMETHOD(SetViewInfo)(THIS_ DWORD dwObject,HGLOBAL hMetaPict,DWORD dvAspect,int nCurrentScale,WINBOOL bRelativeToOrig) PURE;
    776   };
    777 
    778   typedef IOleUIObjInfoW *LPOLEUIOBJINFOW;
    779 
    780 #undef INTERFACE
    781 #define INTERFACE IOleUIObjInfoA
    782 
    783   DECLARE_INTERFACE_(IOleUIObjInfoA,IUnknown) {
    784     STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE;
    785     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    786     STDMETHOD_(ULONG,Release)(THIS) PURE;
    787     STDMETHOD(GetObjectInfo)(THIS_ DWORD dwObject,DWORD *lpdwObjSize,LPSTR *lplpszLabel,LPSTR *lplpszType,LPSTR *lplpszShortType,LPSTR *lplpszLocation) PURE;
    788     STDMETHOD(GetConvertInfo)(THIS_ DWORD dwObject,CLSID *lpClassID,WORD *lpwFormat,CLSID *lpConvertDefaultClassID,LPCLSID *lplpClsidExclude,UINT *lpcClsidExclude) PURE;
    789     STDMETHOD(ConvertObject)(THIS_ DWORD dwObject,REFCLSID clsidNew) PURE;
    790     STDMETHOD(GetViewInfo)(THIS_ DWORD dwObject,HGLOBAL *phMetaPict,DWORD *pdvAspect,int *pnCurrentScale) PURE;
    791     STDMETHOD(SetViewInfo)(THIS_ DWORD dwObject,HGLOBAL hMetaPict,DWORD dvAspect,int nCurrentScale,WINBOOL bRelativeToOrig) PURE;
    792   };
    793 
    794   typedef IOleUIObjInfoA *LPOLEUIOBJINFOA;
    795 
    796 #define IOleUIObjInfo __MINGW_NAME_AW(IOleUIObjInfo)
    797 #define LPOLEUIOBJINFO __MINGW_NAME_AW(LPOLEUIOBJINFO)
    798 
    799 #define IOleUIObjInfoVtbl __MINGW_NAME_AW_EXT(IOleUIObjInfo,Vtbl)
    800 
    801 #undef INTERFACE
    802 #define INTERFACE IOleUILinkInfoW
    803 
    804   DECLARE_INTERFACE_(IOleUILinkInfoW,IOleUILinkContainerW) {
    805     STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE;
    806     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    807     STDMETHOD_(ULONG,Release)(THIS) PURE;
    808     STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE;
    809     STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink,DWORD dwUpdateOpt) PURE;
    810     STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink,DWORD *lpdwUpdateOpt) PURE;
    811     STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink,LPWSTR lpszDisplayName,ULONG lenFileName,ULONG *pchEaten,WINBOOL fValidateSource) PURE;
    812     STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink,LPWSTR *lplpszDisplayName,ULONG *lplenFileName,LPWSTR *lplpszFullLinkType,LPWSTR *lplpszShortLinkType,WINBOOL *lpfSourceAvailable,WINBOOL *lpfIsSelected) PURE;
    813     STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE;
    814     STDMETHOD(UpdateLink)(THIS_ DWORD dwLink,WINBOOL fErrorMessage,WINBOOL fReserved) PURE;
    815     STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
    816     STDMETHOD(GetLastUpdate)(THIS_ DWORD dwLink,FILETIME *lpLastUpdate) PURE;
    817   };
    818 
    819   typedef IOleUILinkInfoW *LPOLEUILINKINFOW;
    820 
    821 #undef INTERFACE
    822 #define INTERFACE IOleUILinkInfoA
    823 
    824   DECLARE_INTERFACE_(IOleUILinkInfoA,IOleUILinkContainerA) {
    825     STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE;
    826     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    827     STDMETHOD_(ULONG,Release)(THIS) PURE;
    828     STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE;
    829     STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink,DWORD dwUpdateOpt) PURE;
    830     STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink,DWORD *lpdwUpdateOpt) PURE;
    831     STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink,LPSTR lpszDisplayName,ULONG lenFileName,ULONG *pchEaten,WINBOOL fValidateSource) PURE;
    832     STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink,LPSTR *lplpszDisplayName,ULONG *lplenFileName,LPSTR *lplpszFullLinkType,LPSTR *lplpszShortLinkType,WINBOOL *lpfSourceAvailable,WINBOOL *lpfIsSelected) PURE;
    833     STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE;
    834     STDMETHOD(UpdateLink)(THIS_ DWORD dwLink,WINBOOL fErrorMessage,WINBOOL fReserved) PURE;
    835     STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
    836     STDMETHOD(GetLastUpdate)(THIS_ DWORD dwLink,FILETIME *lpLastUpdate) PURE;
    837   };
    838 
    839   typedef IOleUILinkInfoA *LPOLEUILINKINFOA;
    840 
    841 #define IOleUILinkInfo __MINGW_NAME_AW(IOleUILinkInfo)
    842 #define LPOLEUILINKINFO __MINGW_NAME_AW(LPOLEUILINKINFO)
    843 
    844 #define IOleUILinkInfoVtbl __MINGW_NAME_AW_EXT(IOleUILinkInfo,Vtbl)
    845 
    846   struct tagOLEUIOBJECTPROPSW;
    847   struct tagOLEUIOBJECTPROPSA;
    848 
    849   typedef struct tagOLEUIGNRLPROPSW {
    850     DWORD cbStruct;
    851     DWORD dwFlags;
    852     DWORD dwReserved1[2];
    853     LPFNOLEUIHOOK lpfnHook;
    854     LPARAM lCustData;
    855     DWORD dwReserved2[3];
    856     struct tagOLEUIOBJECTPROPSW *lpOP;
    857   } OLEUIGNRLPROPSW,*POLEUIGNRLPROPSW,*LPOLEUIGNRLPROPSW;
    858 
    859   typedef struct tagOLEUIGNRLPROPSA {
    860     DWORD cbStruct;
    861     DWORD dwFlags;
    862     DWORD dwReserved1[2];
    863     LPFNOLEUIHOOK lpfnHook;
    864     LPARAM lCustData;
    865     DWORD dwReserved2[3];
    866     struct tagOLEUIOBJECTPROPSA *lpOP;
    867   } OLEUIGNRLPROPSA,*POLEUIGNRLPROPSA,*LPOLEUIGNRLPROPSA;
    868 
    869 #define tagOLEUIGNRLPROPS __MINGW_NAME_AW(tagOLEUIGNRLPROPS)
    870 
    871 #define OLEUIGNRLPROPS __MINGW_NAME_AW(OLEUIGNRLPROPS)
    872 #define POLEUIGNRLPROPS __MINGW_NAME_AW(POLEUIGNRLPROPS)
    873 #define LPOLEUIGNRLPROPS __MINGW_NAME_AW(LPOLEUIGNRLPROPS)
    874 
    875   typedef struct tagOLEUIVIEWPROPSW {
    876     DWORD cbStruct;
    877     DWORD dwFlags;
    878     DWORD dwReserved1[2];
    879     LPFNOLEUIHOOK lpfnHook;
    880     LPARAM lCustData;
    881     DWORD dwReserved2[3];
    882     struct tagOLEUIOBJECTPROPSW *lpOP;
    883     int nScaleMin;
    884     int nScaleMax;
    885   } OLEUIVIEWPROPSW,*POLEUIVIEWPROPSW,*LPOLEUIVIEWPROPSW;
    886 
    887   typedef struct tagOLEUIVIEWPROPSA {
    888     DWORD cbStruct;
    889     DWORD dwFlags;
    890     DWORD dwReserved1[2];
    891     LPFNOLEUIHOOK lpfnHook;
    892     LPARAM lCustData;
    893     DWORD dwReserved2[3];
    894     struct tagOLEUIOBJECTPROPSA *lpOP;
    895     int nScaleMin;
    896     int nScaleMax;
    897   } OLEUIVIEWPROPSA,*POLEUIVIEWPROPSA,*LPOLEUIVIEWPROPSA;
    898 
    899 #define tagOLEUIVIEWPROPS __MINGW_NAME_AW(tagOLEUIVIEWPROPS)
    900 
    901 #define OLEUIVIEWPROPS __MINGW_NAME_AW(OLEUIVIEWPROPS)
    902 #define POLEUIVIEWPROPS __MINGW_NAME_AW(POLEUIVIEWPROPS)
    903 #define LPOLEUIVIEWPROPS __MINGW_NAME_AW(LPOLEUIVIEWPROPS)
    904 
    905 #define VPF_SELECTRELATIVE __MSABI_LONG(0x00000001)
    906 #define VPF_DISABLERELATIVE __MSABI_LONG(0x00000002)
    907 #define VPF_DISABLESCALE __MSABI_LONG(0x00000004)
    908 
    909   typedef struct tagOLEUILINKPROPSW {
    910     DWORD cbStruct;
    911     DWORD dwFlags;
    912     DWORD dwReserved1[2];
    913     LPFNOLEUIHOOK lpfnHook;
    914     LPARAM lCustData;
    915     DWORD dwReserved2[3];
    916     struct tagOLEUIOBJECTPROPSW *lpOP;
    917   } OLEUILINKPROPSW,*POLEUILINKPROPSW,*LPOLEUILINKPROPSW;
    918 
    919   typedef struct tagOLEUILINKPROPSA {
    920     DWORD cbStruct;
    921     DWORD dwFlags;
    922     DWORD dwReserved1[2];
    923     LPFNOLEUIHOOK lpfnHook;
    924     LPARAM lCustData;
    925     DWORD dwReserved2[3];
    926     struct tagOLEUIOBJECTPROPSA *lpOP;
    927   } OLEUILINKPROPSA,*POLEUILINKPROPSA,*LPOLEUILINKPROPSA;
    928 
    929 #define tagOLEUILINKPROPS __MINGW_NAME_AW(tagOLEUILINKPROPS)
    930 
    931 #define OLEUILINKPROPS __MINGW_NAME_AW(OLEUILINKPROPS)
    932 #define POLEUILINKPROPS __MINGW_NAME_AW(POLEUILINKPROPS)
    933 #define LPOLEUILINKPROPS __MINGW_NAME_AW(LPOLEUILINKPROPS)
    934 
    935 #include <prsht.h>
    936 
    937 #ifndef PSM_SETFINISHTEXTA
    938   typedef struct _PROPSHEETHEADER *LPPROPSHEETHEADERW;
    939   typedef struct _PROPSHEETHEADER *LPPROPSHEETHEADERA;
    940 #else
    941   typedef struct _PROPSHEETHEADERW *LPPROPSHEETHEADERW;
    942   typedef struct _PROPSHEETHEADERA *LPPROPSHEETHEADERA;
    943 
    944 #define LPPROPSHEETHEADER __MINGW_NAME_AW(LPPROPSHEETHEADER)
    945 #endif
    946 
    947   typedef struct tagOLEUIOBJECTPROPSW {
    948     DWORD cbStruct;
    949     DWORD dwFlags;
    950     LPPROPSHEETHEADERW lpPS;
    951     DWORD dwObject;
    952     LPOLEUIOBJINFOW lpObjInfo;
    953     DWORD dwLink;
    954     LPOLEUILINKINFOW lpLinkInfo;
    955     LPOLEUIGNRLPROPSW lpGP;
    956     LPOLEUIVIEWPROPSW lpVP;
    957     LPOLEUILINKPROPSW lpLP;
    958   } OLEUIOBJECTPROPSW,*POLEUIOBJECTPROPSW,*LPOLEUIOBJECTPROPSW;
    959 
    960   typedef struct tagOLEUIOBJECTPROPSA {
    961     DWORD cbStruct;
    962     DWORD dwFlags;
    963     LPPROPSHEETHEADERA lpPS;
    964     DWORD dwObject;
    965     LPOLEUIOBJINFOA lpObjInfo;
    966     DWORD dwLink;
    967     LPOLEUILINKINFOA lpLinkInfo;
    968 
    969     LPOLEUIGNRLPROPSA lpGP;
    970     LPOLEUIVIEWPROPSA lpVP;
    971     LPOLEUILINKPROPSA lpLP;
    972   } OLEUIOBJECTPROPSA,*POLEUIOBJECTPROPSA,*LPOLEUIOBJECTPROPSA;
    973 
    974   STDAPI_(UINT) OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW);
    975   STDAPI_(UINT) OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA);
    976 
    977 #define tagOLEUIOBJECTPROPS __MINGW_NAME_AW(tagOLEUIOBJECTPROPS)
    978 
    979 #define OLEUIOBJECTPROPS __MINGW_NAME_AW(OLEUIOBJECTPROPS)
    980 #define POLEUIOBJECTPROPS __MINGW_NAME_AW(POLEUIOBJECTPROPS)
    981 #define LPOLEUIOBJECTPROPS __MINGW_NAME_AW(LPOLEUIOBJECTPROPS)
    982 
    983 #define OleUIObjectProperties __MINGW_NAME_AW(OleUIObjectProperties)
    984 
    985 #define OPF_OBJECTISLINK __MSABI_LONG(0x00000001)
    986 #define OPF_NOFILLDEFAULT __MSABI_LONG(0x00000002)
    987 #define OPF_SHOWHELP __MSABI_LONG(0x00000004)
    988 #define OPF_DISABLECONVERT __MSABI_LONG(0x00000008)
    989 
    990 #define OLEUI_OPERR_SUBPROPNULL (OLEUI_ERR_STANDARDMAX+0)
    991 #define OLEUI_OPERR_SUBPROPINVALID (OLEUI_ERR_STANDARDMAX+1)
    992 #define OLEUI_OPERR_PROPSHEETNULL (OLEUI_ERR_STANDARDMAX+2)
    993 #define OLEUI_OPERR_PROPSHEETINVALID (OLEUI_ERR_STANDARDMAX+3)
    994 #define OLEUI_OPERR_SUPPROP (OLEUI_ERR_STANDARDMAX+4)
    995 #define OLEUI_OPERR_PROPSINVALID (OLEUI_ERR_STANDARDMAX+5)
    996 #define OLEUI_OPERR_PAGESINCORRECT (OLEUI_ERR_STANDARDMAX+6)
    997 #define OLEUI_OPERR_INVALIDPAGES (OLEUI_ERR_STANDARDMAX+7)
    998 #define OLEUI_OPERR_NOTSUPPORTED (OLEUI_ERR_STANDARDMAX+8)
    999 #define OLEUI_OPERR_DLGPROCNOTNULL (OLEUI_ERR_STANDARDMAX+9)
   1000 #define OLEUI_OPERR_LPARAMNOTZERO (OLEUI_ERR_STANDARDMAX+10)
   1001 
   1002 #define OLEUI_GPERR_STRINGINVALID (OLEUI_ERR_STANDARDMAX+11)
   1003 #define OLEUI_GPERR_CLASSIDINVALID (OLEUI_ERR_STANDARDMAX+12)
   1004 #define OLEUI_GPERR_LPCLSIDEXCLUDEINVALID (OLEUI_ERR_STANDARDMAX+13)
   1005 #define OLEUI_GPERR_CBFORMATINVALID (OLEUI_ERR_STANDARDMAX+14)
   1006 #define OLEUI_VPERR_METAPICTINVALID (OLEUI_ERR_STANDARDMAX+15)
   1007 #define OLEUI_VPERR_DVASPECTINVALID (OLEUI_ERR_STANDARDMAX+16)
   1008 #define OLEUI_LPERR_LINKCNTRNULL (OLEUI_ERR_STANDARDMAX+17)
   1009 #define OLEUI_LPERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+18)
   1010 
   1011 #define OLEUI_OPERR_PROPERTYSHEET (OLEUI_ERR_STANDARDMAX+19)
   1012 #define OLEUI_OPERR_OBJINFOINVALID (OLEUI_ERR_STANDARDMAX+20)
   1013 #define OLEUI_OPERR_LINKINFOINVALID (OLEUI_ERR_STANDARDMAX+21)
   1014 
   1015 #define OLEUI_QUERY_GETCLASSID 0xFF00
   1016 #define OLEUI_QUERY_LINKBROKEN 0xFF01
   1017 
   1018   int __cdecl OleUIPromptUserW(int nTemplate,HWND hwndParent,...);
   1019   int __cdecl OleUIPromptUserA(int nTemplate,HWND hwndParent,...);
   1020 
   1021 #define OleUIPromptUser __MINGW_NAME_AW(OleUIPromptUser)
   1022 
   1023   STDAPI_(WINBOOL) OleUIUpdateLinksW(LPOLEUILINKCONTAINERW lpOleUILinkCntr,HWND hwndParent,LPWSTR lpszTitle,int cLinks);
   1024   STDAPI_(WINBOOL) OleUIUpdateLinksA(LPOLEUILINKCONTAINERA lpOleUILinkCntr,HWND hwndParent,LPSTR lpszTitle,int cLinks);
   1025 
   1026 #define OleUIUpdateLinks __MINGW_NAME_AW(OleUIUpdateLinks)
   1027 
   1028 #pragma pack(pop)
   1029 
   1030 #ifdef __cplusplus
   1031 }
   1032 #endif
   1033 #endif
   1034 #endif
   1035