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 
DECLARE_INTERFACE_(IOleUILinkContainerW,IUnknown)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 
DECLARE_INTERFACE_(IOleUILinkContainerA,IUnknown)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 
DECLARE_INTERFACE_(IOleUIObjInfoW,IUnknown)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 
DECLARE_INTERFACE_(IOleUIObjInfoA,IUnknown)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 
DECLARE_INTERFACE_(IOleUILinkInfoW,IOleUILinkContainerW)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 
DECLARE_INTERFACE_(IOleUILinkInfoA,IOleUILinkContainerA)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