widl: Add support for generating old-style interpreted stubs for clients.
[wine] / include / oledlg.h
1 /*
2  * Declarations for OLEDLG
3  *
4  * Copyright (C) the Wine project
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20
21 #ifndef __WINE_OLEDLG_H
22 #define __WINE_OLEDLG_H
23
24 #ifndef __WINESRC__
25 # include <windows.h>
26 #endif
27 #include <shellapi.h>
28 #include <commdlg.h>
29 #include <ole2.h>
30 #ifndef __WINESRC__
31 # include <string.h>
32 # include <tchar.h>
33 #endif
34 #include <dlgs.h>
35 #include <prsht.h>
36
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40
41
42 typedef struct IOleUILinkContainerA *POLEUILINKCONTAINERA, *LPOLEUILINKCONTAINERA;
43 typedef struct IOleUILinkContainerW *POLEUILINKCONTAINERW, *LPOLEUILINKCONTAINERW;
44
45 typedef struct IOleUILinkInfoA *POLEUILINKINFOA, *LPOLEUILINKINFOA;
46 typedef struct IOleUILinkInfoW *POLEUILINKINFOW, *LPOLEUILINKINFOW;
47
48 typedef struct IOleUIObjInfoA *POLEUIOBJINFOA, *LPOLEUIOBJINFOA;
49 typedef struct IOleUIObjInfoW *POLEUIOBJINFOW, *LPOLEUIOBJINFOW;
50
51 #define IDC_OLEUIHELP                   99
52
53
54 #define OLEUI_ERR_STANDARDMAX           116
55
56 #define OLEUI_BZERR_HTASKINVALID        (OLEUI_ERR_STANDARDMAX+0)
57 #define OLEUI_BZ_SWITCHTOSELECTED       (OLEUI_ERR_STANDARDMAX+1)
58 #define OLEUI_BZ_RETRYSELECTED          (OLEUI_ERR_STANDARDMAX+2)
59 #define OLEUI_BZ_CALLUNBLOCKED          (OLEUI_ERR_STANDARDMAX+3)
60
61 #define OLEUI_FALSE   0
62 #define OLEUI_SUCCESS 1 /* Same as OLEUI_OK */
63 #define OLEUI_OK      1 /* OK button pressed */
64 #define OLEUI_CANCEL  2 /* Cancel button pressed */
65
66 #define OLEUI_ERR_STANDARDMIN           100
67 #define OLEUI_ERR_OLEMEMALLOC           100
68 #define OLEUI_ERR_STRUCTURENULL         101
69 #define OLEUI_ERR_STRUCTUREINVALID      102
70 #define OLEUI_ERR_CBSTRUCTINCORRECT     103
71 #define OLEUI_ERR_HWNDOWNERINVALID      104
72 #define OLEUI_ERR_LPSZCAPTIONINVALID    105
73 #define OLEUI_ERR_LPFNHOOKINVALID       106
74 #define OLEUI_ERR_HINSTANCEINVALID      107
75 #define OLEUI_ERR_LPSZTEMPLATEINVALID   108
76 #define OLEUI_ERR_HRESOURCEINVALID      109
77 #define OLEUI_ERR_FINDTEMPLATEFAILURE   110
78 #define OLEUI_ERR_LOADTEMPLATEFAILURE   111
79 #define OLEUI_ERR_DIALOGFAILURE         112
80 #define OLEUI_ERR_LOCALMEMALLOC         113
81 #define OLEUI_ERR_GLOBALMEMALLOC        114
82 #define OLEUI_ERR_LOADSTRING            115
83 #define OLEUI_ERR_STANDARDMAX           116
84
85 typedef UINT (CALLBACK *LPFNOLEUIHOOK)(HWND, UINT, WPARAM, LPARAM);
86
87 /*****************************************************************************
88  * Registered Message Names
89  */
90 #define SZOLEUI_MSG_HELPA              "OLEUI_MSG_HELP"
91 #define SZOLEUI_MSG_ENDDIALOGA         "OLEUI_MSG_ENDDIALOG"
92 #define SZOLEUI_MSG_BROWSEA            "OLEUI_MSG_BROWSE"
93 #define SZOLEUI_MSG_CHANGEICONA        "OLEUI_MSG_CHANGEICON"
94 #define SZOLEUI_MSG_CLOSEBUSYDIALOGA   "OLEUI_MSG_CLOSEBUSYDIALOG"
95 #define SZOLEUI_MSG_CONVERTA           "OLEUI_MSG_CONVERT"
96 #define SZOLEUI_MSG_CHANGESOURCEA      "OLEUI_MSG_CHANGESOURCE"
97 #define SZOLEUI_MSG_ADDCONTROLA        "OLEUI_MSG_ADDCONTROL"
98 #define SZOLEUI_MSG_BROWSE_OFNA        "OLEUI_MSG_BROWSE_OFN"
99 #if defined(__GNUC__)
100 # define SZOLEUI_MSG_HELPW             (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','H','E','L','P',0 }
101 # define SZOLEUI_MSG_ENDDIALOGW        (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','E','N','D','D','I','A','L','O','G',0 }
102 # define SZOLEUI_MSG_BROWSEW           (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','B','R','O','W','S','E',0 }
103 # define SZOLEUI_MSG_CHANGEICONW       (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','C','H','A','N','G','E','I','C','O','N',0 }
104 # define SZOLEUI_MSG_CLOSEBUSYDIALOGW  (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','C','L','O','S','E','B','U','S','Y','D','I','A','L','O','G',0 }
105 # define SZOLEUI_MSG_CONVERTW          (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','C','O','N','V','E','R','T',0 }
106 # define SZOLEUI_MSG_CHANGESOURCEW     (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','C','H','A','N','G','E','S','O','U','R','C','E',0 }
107 # define SZOLEUI_MSG_ADDCONTROLW       (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','A','D','D','C','O','N','T','R','O','L',0 }
108 # define SZOLEUI_MSG_BROWSE_OFNW       (const WCHAR []){ 'O','L','E','U','I','_','M','S','G','_','B','R','O','W','S','E','_','O','F','N',0 }
109 #elif defined(_MSC_VER)
110 # define SZOLEUI_MSG_HELPW              L"OLEUI_MSG_HELP"
111 # define SZOLEUI_MSG_ENDDIALOGW         L"OLEUI_MSG_ENDDIALOG"
112 # define SZOLEUI_MSG_BROWSEW            L"OLEUI_MSG_BROWSE"
113 # define SZOLEUI_MSG_CHANGEICONW        L"OLEUI_MSG_CHANGEICON"
114 # define SZOLEUI_MSG_CLOSEBUSYDIALOGW   L"OLEUI_MSG_CLOSEBUSYDIALOG"
115 # define SZOLEUI_MSG_CONVERTW           L"OLEUI_MSG_CONVERT"
116 # define SZOLEUI_MSG_CHANGESOURCEW      L"OLEUI_MSG_CHANGESOURCE"
117 # define SZOLEUI_MSG_ADDCONTROLW        L"OLEUI_MSG_ADDCONTROL"
118 # define SZOLEUI_MSG_BROWSE_OFNW        L"OLEUI_MSG_BROWSE_OFN"
119 #else
120 static const WCHAR SZOLEUI_MSG_HELPW[]             = { 'O','L','E','U','I','_','M','S','G','_','H','E','L','P',0 };
121 static const WCHAR SZOLEUI_MSG_ENDDIALOGW[]        = { 'O','L','E','U','I','_','M','S','G','_','E','N','D','D','I','A','L','O','G',0 };
122 static const WCHAR SZOLEUI_MSG_BROWSEW[]           = { 'O','L','E','U','I','_','M','S','G','_','B','R','O','W','S','E',0 };
123 static const WCHAR SZOLEUI_MSG_CHANGEICONW[]       = { 'O','L','E','U','I','_','M','S','G','_','C','H','A','N','G','E','I','C','O','N',0 };
124 static const WCHAR SZOLEUI_MSG_CLOSEBUSYDIALOGW[]  = { 'O','L','E','U','I','_','M','S','G','_','C','L','O','S','E','B','U','S','Y','D','I','A','L','O','G',0 };
125 static const WCHAR SZOLEUI_MSG_CONVERTW[]          = { 'O','L','E','U','I','_','M','S','G','_','C','O','N','V','E','R','T',0 };
126 static const WCHAR SZOLEUI_MSG_CHANGESOURCEW[]     = { 'O','L','E','U','I','_','M','S','G','_','C','H','A','N','G','E','S','O','U','R','C','E',0 };
127 static const WCHAR SZOLEUI_MSG_ADDCONTROLW[]       = { 'O','L','E','U','I','_','M','S','G','_','A','D','D','C','O','N','T','R','O','L',0 };
128 static const WCHAR SZOLEUI_MSG_BROWSE_OFNW[]       = { 'O','L','E','U','I','_','M','S','G','_','B','R','O','W','S','E','_','O','F','N',0 };
129 #endif
130 #define SZOLEUI_MSG_HELP             WINELIB_NAME_AW(SZOLEUI_MSG_HELP)
131 #define SZOLEUI_MSG_ENDDIALOG        WINELIB_NAME_AW(SZOLEUI_MSG_ENDDIALOG)
132 #define SZOLEUI_MSG_BROWSE           WINELIB_NAME_AW(SZOLEUI_MSG_BROWSE)
133 #define SZOLEUI_MSG_CHANGEICON       WINELIB_NAME_AW(SZOLEUI_MSG_CHANGEICON)
134 #define SZOLEUI_MSG_CLOSEBUSYDIALOG  WINELIB_NAME_AW(SZOLEUI_MSG_CLOSEBUSYDIALOG)
135 #define SZOLEUI_MSG_CONVERT          WINELIB_NAME_AW(SZOLEUI_MSG_CONVERT)
136 #define SZOLEUI_MSG_CHANGESOURCE     WINELIB_NAME_AW(SZOLEUI_MSG_CHANGESOURCE)
137 #define SZOLEUI_MSG_ADDCONTROL       WINELIB_NAME_AW(SZOLEUI_MSG_ADDCONTROL)
138 #define SZOLEUI_MSG_BROWSE_OFN       WINELIB_NAME_AW(SZOLEUI_MSG_BROWSE_OFN)
139
140
141 /*****************************************************************************
142  * INSERT OBJECT DIALOG
143  */
144 typedef struct tagOLEUIINSERTOBJECTA
145 {
146     DWORD           cbStruct;
147     DWORD           dwFlags;
148     HWND            hWndOwner;
149     LPCSTR          lpszCaption;
150     LPFNOLEUIHOOK   lpfnHook;
151     LPARAM          lCustData;
152     HINSTANCE       hInstance;
153     LPCSTR          lpszTemplate;
154     HRSRC           hResource;
155     CLSID           clsid;
156     LPSTR           lpszFile;
157     UINT            cchFile;
158     UINT            cClsidExclude;
159     LPCLSID         lpClsidExclude;
160     IID             iid;
161     DWORD           oleRender;
162     LPFORMATETC     lpFormatEtc;
163     LPOLECLIENTSITE lpIOleClientSite;
164     LPSTORAGE       lpIStorage;
165     LPVOID          *ppvObj;
166     SCODE           sc;
167     HGLOBAL         hMetaPict;
168 } OLEUIINSERTOBJECTA, *POLEUIINSERTOBJECTA, *LPOLEUIINSERTOBJECTA;
169
170 typedef struct tagOLEUIINSERTOBJECTW
171 {
172     DWORD           cbStruct;
173     DWORD           dwFlags;
174     HWND            hWndOwner;
175     LPCWSTR         lpszCaption;
176     LPFNOLEUIHOOK   lpfnHook;
177     LPARAM          lCustData;
178     HINSTANCE       hInstance;
179     LPCWSTR         lpszTemplate;
180     HRSRC           hResource;
181     CLSID           clsid;
182     LPWSTR          lpszFile;
183     UINT            cchFile;
184     UINT            cClsidExclude;
185     LPCLSID         lpClsidExclude;
186     IID             iid;
187     DWORD           oleRender;
188     LPFORMATETC     lpFormatEtc;
189     LPOLECLIENTSITE lpIOleClientSite;
190     LPSTORAGE       lpIStorage;
191     LPVOID          *ppvObj;
192     SCODE           sc;
193     HGLOBAL         hMetaPict;
194 } OLEUIINSERTOBJECTW, *POLEUIINSERTOBJECTW, *LPOLEUIINSERTOBJECTW;
195
196 DECL_WINELIB_TYPE_AW(OLEUIINSERTOBJECT)
197 DECL_WINELIB_TYPE_AW(POLEUIINSERTOBJECT)
198 DECL_WINELIB_TYPE_AW(LPOLEUIINSERTOBJECT)
199
200 #define IOF_SHOWHELP                    0x00000001L
201 #define IOF_SELECTCREATENEW             0x00000002L
202 #define IOF_SELECTCREATEFROMFILE        0x00000004L
203 #define IOF_CHECKLINK                   0x00000008L
204 #define IOF_CHECKDISPLAYASICON          0x00000010L
205 #define IOF_CREATENEWOBJECT             0x00000020L
206 #define IOF_CREATEFILEOBJECT            0x00000040L
207 #define IOF_CREATELINKOBJECT            0x00000080L
208 #define IOF_DISABLELINK                 0x00000100L
209 #define IOF_VERIFYSERVERSEXIST          0x00000200L
210 #define IOF_DISABLEDISPLAYASICON        0x00000400L
211 #define IOF_HIDECHANGEICON              0x00000800L
212 #define IOF_SHOWINSERTCONTROL           0x00001000L
213 #define IOF_SELECTCREATECONTROL         0x00002000L
214
215 /*****************************************************************************
216  * CONVERT DIALOG
217  */
218 typedef struct tagOLEUICONVERTA
219 {
220     DWORD           cbStruct;
221     DWORD           dwFlags;
222     HWND            hWndOwner;
223     LPCSTR          lpszCaption;
224     LPFNOLEUIHOOK   lpfnHook;
225     LPARAM          lCustData;
226     HINSTANCE       hInstance;
227     LPCSTR          lpszTemplate;
228     HRSRC           hResource;
229     CLSID           clsid;
230     CLSID           clsidConvertDefault;
231     CLSID           clsidActivateDefault;
232     CLSID           clsidNew;
233     DWORD           dvAspect;
234     WORD            wFormat;
235     BOOL            fIsLinkedObject;
236     HGLOBAL         hMetaPict;
237     LPSTR           lpszUserType;
238     BOOL            fObjectsIconChanged;
239     LPSTR           lpszDefLabel;
240     UINT            cClsidExclude;
241     LPCLSID         lpClsidExclude;
242 } OLEUICONVERTA, *POLEUICONVERTA, *LPOLEUICONVERTA;
243
244 typedef struct tagOLEUICONVERTW
245 {
246     DWORD           cbStruct;
247     DWORD           dwFlags;
248     HWND            hWndOwner;
249     LPCWSTR         lpszCaption;
250     LPFNOLEUIHOOK   lpfnHook;
251     LPARAM          lCustData;
252     HINSTANCE       hInstance;
253     LPCWSTR         lpszTemplate;
254     HRSRC           hResource;
255     CLSID           clsid;
256     CLSID           clsidConvertDefault;
257     CLSID           clsidActivateDefault;
258     CLSID           clsidNew;
259     DWORD           dvAspect;
260     WORD            wFormat;
261     BOOL            fIsLinkedObject;
262     HGLOBAL         hMetaPict;
263     LPWSTR          lpszUserType;
264     BOOL            fObjectsIconChanged;
265     LPWSTR          lpszDefLabel;
266     UINT            cClsidExclude;
267     LPCLSID         lpClsidExclude;
268 } OLEUICONVERTW, *POLEUICONVERTW, *LPOLEUICONVERTW;
269
270 DECL_WINELIB_TYPE_AW(OLEUICONVERT)
271 DECL_WINELIB_TYPE_AW(POLEUICONVERT)
272 DECL_WINELIB_TYPE_AW(LPOLEUICONVERT)
273
274 #define CF_SHOWHELPBUTTON               0x00000001L
275 #define CF_SETCONVERTDEFAULT            0x00000002L
276 #define CF_SETACTIVATEDEFAULT           0x00000004L
277 #define CF_SELECTCONVERTTO              0x00000008L
278 #define CF_SELECTACTIVATEAS             0x00000010L
279 #define CF_DISABLEDISPLAYASICON         0x00000020L
280 #define CF_DISABLEACTIVATEAS            0x00000040L
281 #define CF_HIDECHANGEICON               0x00000080L
282 #define CF_CONVERTONLY                  0x00000100L
283
284 /*****************************************************************************
285  * CHANGE ICON DIALOG
286  */
287 typedef struct tagOLEUICHANGEICONA
288 {
289     DWORD           cbStruct;
290     DWORD           dwFlags;
291     HWND            hWndOwner;
292     LPCSTR          lpszCaption;
293     LPFNOLEUIHOOK   lpfnHook;
294     LPARAM          lCustData;
295     HINSTANCE       hInstance;
296     LPCSTR          lpszTemplate;
297     HRSRC           hResource;
298     HGLOBAL         hMetaPict;
299     CLSID           clsid;
300     CHAR            szIconExe[MAX_PATH];
301     INT             cchIconExe;
302 } OLEUICHANGEICONA, *POLEUICHANGEICONA, *LPOLEUICHANGEICONA;
303
304 typedef struct tagOLEUICHANGEICONW
305 {
306     DWORD           cbStruct;
307     DWORD           dwFlags;
308     HWND            hWndOwner;
309     LPCWSTR         lpszCaption;
310     LPFNOLEUIHOOK   lpfnHook;
311     LPARAM          lCustData;
312     HINSTANCE       hInstance;
313     LPCWSTR         lpszTemplate;
314     HRSRC           hResource;
315     HGLOBAL         hMetaPict;
316     CLSID           clsid;
317     WCHAR           szIconExe[MAX_PATH];
318     INT             cchIconExe;
319 } OLEUICHANGEICONW, *POLEUICHANGEICONW, *LPOLEUICHANGEICONW;
320
321 DECL_WINELIB_TYPE_AW(OLEUICHANGEICON)
322 DECL_WINELIB_TYPE_AW(POLEUICHANGEICON)
323 DECL_WINELIB_TYPE_AW(LPOLEUICHANGEICON)
324
325
326 #define CIF_SHOWHELP                    0x00000001L
327 #define CIF_SELECTCURRENT               0x00000002L
328 #define CIF_SELECTDEFAULT               0x00000004L
329 #define CIF_SELECTFROMFILE              0x00000008L
330 #define CIF_USEICONEXE                  0x00000010L
331
332 /*****************************************************************************
333  * PASTE SPECIAL DIALOG
334  */
335
336 typedef enum tagOLEUIPASTEFLAG
337 {
338    OLEUIPASTE_ENABLEICON    = 2048,
339    OLEUIPASTE_PASTEONLY     = 0,
340    OLEUIPASTE_PASTE         = 512,
341    OLEUIPASTE_LINKANYTYPE   = 1024,
342    OLEUIPASTE_LINKTYPE1     = 1,
343    OLEUIPASTE_LINKTYPE2     = 2,
344    OLEUIPASTE_LINKTYPE3     = 4,
345    OLEUIPASTE_LINKTYPE4     = 8,
346    OLEUIPASTE_LINKTYPE5     = 16,
347    OLEUIPASTE_LINKTYPE6     = 32,
348    OLEUIPASTE_LINKTYPE7     = 64,
349    OLEUIPASTE_LINKTYPE8     = 128
350 } OLEUIPASTEFLAG;
351
352 typedef struct tagOLEUIPASTEENTRYA
353 {
354    FORMATETC        fmtetc;
355    LPCSTR           lpstrFormatName;
356    LPCSTR           lpstrResultText;
357    DWORD            dwFlags;
358    DWORD            dwScratchSpace;
359 } OLEUIPASTEENTRYA, *POLEUIPASTEENTRYA, *LPOLEUIPASTEENTRYA;
360
361 typedef struct tagOLEUIPASTEENTRYW
362 {
363    FORMATETC        fmtetc;
364    LPCWSTR          lpstrFormatName;
365    LPCWSTR          lpstrResultText;
366    DWORD            dwFlags;
367    DWORD            dwScratchSpace;
368 } OLEUIPASTEENTRYW, *POLEUIPASTEENTRYW, *LPOLEUIPASTEENTRYW;
369
370 DECL_WINELIB_TYPE_AW(OLEUIPASTEENTRY)
371 DECL_WINELIB_TYPE_AW(POLEUIPASTEENTRY)
372 DECL_WINELIB_TYPE_AW(LPOLEUIPASTEENTRY)
373
374 typedef struct tagOLEUIPASTESPECIALA
375 {
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     BOOL            fLink;
394     HGLOBAL         hMetaPict;
395     SIZEL           sizel;
396 } OLEUIPASTESPECIALA, *POLEUIPASTESPECIALA, *LPOLEUIPASTESPECIALA;
397
398 typedef struct tagOLEUIPASTESPECIALW
399 {
400     DWORD           cbStruct;
401     DWORD           dwFlags;
402     HWND            hWndOwner;
403     LPCWSTR         lpszCaption;
404     LPFNOLEUIHOOK   lpfnHook;
405     LPARAM          lCustData;
406     HINSTANCE       hInstance;
407     LPCWSTR         lpszTemplate;
408     HRSRC           hResource;
409     LPDATAOBJECT    lpSrcDataObj;
410     LPOLEUIPASTEENTRYW arrPasteEntries;
411     INT             cPasteEntries;
412     UINT*           arrLinkTypes;
413     INT             cLinkTypes;
414     UINT            cClsidExclude;
415     LPCLSID         lpClsidExclude;
416     INT             nSelectedIndex;
417     BOOL            fLink;
418     HGLOBAL         hMetaPict;
419     SIZEL           sizel;
420 } OLEUIPASTESPECIALW, *POLEUIPASTESPECIALW, *LPOLEUIPASTESPECIALW;
421
422 DECL_WINELIB_TYPE_AW(OLEUIPASTESPECIAL)
423 DECL_WINELIB_TYPE_AW(POLEUIPASTESPECIAL)
424 DECL_WINELIB_TYPE_AW(LPOLEUIPASTESPECIAL)
425
426 #define PS_MAXLINKTYPES                 8
427
428 #define PSF_SHOWHELP                    0x00000001L
429 #define PSF_SELECTPASTE                 0x00000002L
430 #define PSF_SELECTPASTELINK             0x00000004L
431
432 #define PSF_CHECKDISPLAYASICON          0x00000008L
433 #define PSF_DISABLEDISPLAYASICON        0x00000010L
434 #define PSF_HIDECHANGEICON              0x00000020L
435 #define PSF_STAYONCLIPBOARDCHANGE       0x00000040L
436 #define PSF_NOREFRESHDATAOBJECT         0x00000080L
437
438 #define OLEUI_IOERR_SRCDATAOBJECTINVALID    (OLEUI_ERR_STANDARDMAX+0)
439 #define OLEUI_IOERR_ARRPASTEENTRIESINVALID  (OLEUI_ERR_STANDARDMAX+1)
440 #define OLEUI_IOERR_ARRLINKTYPESINVALID     (OLEUI_ERR_STANDARDMAX+2)
441 #define OLEUI_PSERR_CLIPBOARDCHANGED        (OLEUI_ERR_STANDARDMAX+3)
442 #define OLEUI_PSERR_GETCLIPBOARDFAILED      (OLEUI_ERR_STANDARDMAX+4)
443
444 /* Paste Special dialog resource ids */
445 #define IDD_PASTESPECIAL       1003
446 #define IDD_PASTESPECIAL4      1108
447
448 /* Paste Special dialog control ids */
449 #define IDC_PS_PASTE           500
450 #define IDC_PS_PASTELINK       501
451 #define IDC_PS_SOURCETEXT      502
452 #define IDC_PS_PASTELIST       503
453 #define IDC_PS_PASTELINKLIST   504
454 #define IDC_PS_DISPLAYLIST     505
455 #define IDC_PS_DISPLAYASICON   506
456 #define IDC_PS_ICONDISPLAY     507
457 #define IDC_PS_CHANGEICON      508
458 #define IDC_PS_RESULTIMAGE     509
459 #define IDC_PS_RESULTTEXT      510
460
461 /*****************************************************************************
462  * EDIT LINKS DIALOG
463  */
464
465 #define ELF_SHOWHELP               0x00000001L
466 #define ELF_DISABLEUPDATENOW       0x00000002L
467 #define ELF_DISABLEOPENSOURCE      0x00000004L
468 #define ELF_DISABLECHANGESOURCE    0x00000008L
469 #define ELF_DISABLECANCELLINK      0x00000010L
470
471 typedef struct tagOLEUIEDITLINKSW
472 {
473     DWORD           cbStruct;
474     DWORD           dwFlags;
475     HWND            hWndOwner;
476     LPCWSTR         lpszCaption;
477     LPFNOLEUIHOOK   lpfnHook;
478     LPARAM          lCustData;
479     HINSTANCE       hInstance;
480     LPCWSTR         lpszTemplate;
481     HRSRC           hResource;
482     LPOLEUILINKCONTAINERW lpOleUILinkContainer;
483 } OLEUIEDITLINKSW, *POLEUIEDITLINKSW, *LPOLEUIEDITLINKSW;
484
485 typedef struct tagOLEUIEDITLINKSA
486 {
487     DWORD           cbStruct;
488     DWORD           dwFlags;
489     HWND            hWndOwner;
490     LPCSTR          lpszCaption;
491     LPFNOLEUIHOOK   lpfnHook;
492     LPARAM          lCustData;
493     HINSTANCE       hInstance;
494     LPCSTR          lpszTemplate;
495     HRSRC           hResource;
496     LPOLEUILINKCONTAINERA lpOleUILinkContainer;
497 } OLEUIEDITLINKSA, *POLEUIEDITLINKSA, *LPOLEUIEDITLINKSA;
498
499 DECL_WINELIB_TYPE_AW(OLEUIEDITLINKS)
500 DECL_WINELIB_TYPE_AW(POLEUIEDITLINKS)
501 DECL_WINELIB_TYPE_AW(LPOLEUIEDITLINKS)
502
503
504 /***********************************************************************************
505  * BUSY DIALOG
506  */
507 typedef struct tagOLEUIBUSYA
508 {
509     DWORD           cbStruct;
510     DWORD           dwFlags;
511     HWND            hWndOwner;
512     LPCSTR          lpszCaption;
513     LPFNOLEUIHOOK   lpfnHook;
514     LPARAM          lCustData;
515     HINSTANCE       hInstance;
516     LPCSTR          lpszTemplate;
517     HRSRC           hResource;
518     HTASK           hTask;
519     HWND*           lphWndDialog;
520 } OLEUIBUSYA, *POLEUIBUSYA, *LPOLEUIBUSYA;
521
522 typedef struct tagOLEUIBUSYW
523 {
524     DWORD           cbStruct;
525     DWORD           dwFlags;
526     HWND            hWndOwner;
527     LPCWSTR         lpszCaption;
528     LPFNOLEUIHOOK   lpfnHook;
529     LPARAM          lCustData;
530     HINSTANCE       hInstance;
531     LPCWSTR         lpszTemplate;
532     HRSRC           hResource;
533     HTASK           hTask;
534     HWND*           lphWndDialog;
535 } OLEUIBUSYW, *POLEUIBUSYW, *LPOLEUIBUSYW;
536
537 DECL_WINELIB_TYPE_AW(OLEUIBUSY)
538 DECL_WINELIB_TYPE_AW(POLEUIBUSY)
539 DECL_WINELIB_TYPE_AW(LPOLEUIBUSY)
540
541
542 #define BZ_DISABLECANCELBUTTON          0x00000001L
543 #define BZ_DISABLESWITCHTOBUTTON        0x00000002L
544 #define BZ_DISABLERETRYBUTTON           0x00000004L
545 #define BZ_NOTRESPONDINGDIALOG          0x00000008L
546
547 /***********************************************************************************
548  * OBJECT PROPERTIES DIALOG
549  */
550
551 struct tagOLEUIOBJECTPROPSW;
552 struct tagOLEUIOBJECTPROPSA;
553
554 typedef struct tagOLEUIGNRLPROPSA
555 {
556     DWORD           cbStruct;
557     DWORD           dwFlags;
558     DWORD           dwReserved1[2];
559     LPFNOLEUIHOOK   lpfnHook;
560     LPARAM          lCustData;
561     DWORD           dwReserved2[3];
562     struct tagOLEUIOBJECTPROPSA* lpOP;
563
564 } OLEUIGNRLPROPSA, *POLEUIGNRLPROPSA, *LPOLEUIGNRLPROPSA;
565
566 typedef struct tagOLEUIGNRLPROPSW
567 {
568     DWORD           cbStruct;
569     DWORD           dwFlags;
570     DWORD           dwReserved1[2];
571     LPFNOLEUIHOOK   lpfnHook;
572     LPARAM          lCustData;
573     DWORD           dwReserved2[3];
574     struct tagOLEUIOBJECTPROPSW* lpOP;
575 } OLEUIGNRLPROPSW, *POLEUIGNRLPROPSW, *LPOLEUIGNRLPROPSW;
576
577 DECL_WINELIB_TYPE_AW(OLEUIGNRLPROPS)
578 DECL_WINELIB_TYPE_AW(POLEUIGNRLPROPS)
579 DECL_WINELIB_TYPE_AW(LPOLEUIGNRLPROPS)
580
581 typedef struct tagOLEUIVIEWPROPSA
582 {
583     DWORD           cbStruct;
584     DWORD           dwFlags;
585     DWORD           dwReserved1[2];
586     LPFNOLEUIHOOK   lpfnHook;
587     LPARAM          lCustData;
588     DWORD           dwReserved2[3];
589     struct tagOLEUIOBJECTPROPSA* lpOP;
590     INT             nScaleMin;
591     INT             nScaleMax;
592 } OLEUIVIEWPROPSA, *POLEUIVIEWPROPSA, *LPOLEUIVIEWPROPSA;
593
594 typedef struct tagOLEUIVIEWPROPSW
595 {
596     DWORD           cbStruct;
597     DWORD           dwFlags;
598     DWORD           dwReserved1[2];
599     LPFNOLEUIHOOK   lpfnHook;
600     LPARAM          lCustData;
601     DWORD           dwReserved2[3];
602     struct tagOLEUIOBJECTPROPSW* lpOP;
603     INT             nScaleMin;
604     INT             nScaleMax;
605 } OLEUIVIEWPROPSW, *POLEUIVIEWPROPSW, *LPOLEUIVIEWPROPSW;
606
607 DECL_WINELIB_TYPE_AW(OLEUIVIEWPROPS)
608 DECL_WINELIB_TYPE_AW(POLEUIVIEWPROPS)
609 DECL_WINELIB_TYPE_AW(LPOLEUIVIEWPROPS)
610
611
612 #define VPF_SELECTRELATIVE          0x00000001L
613 #define VPF_DISABLERELATIVE         0x00000002L
614 #define VPF_DISABLESCALE            0x00000004L
615
616 typedef struct tagOLEUILINKPROPSA
617 {
618     DWORD           cbStruct;
619     DWORD           dwFlags;
620     DWORD           dwReserved1[2];
621     LPFNOLEUIHOOK   lpfnHook;
622     LPARAM          lCustData;
623     DWORD           dwReserved2[3];
624     struct tagOLEUIOBJECTPROPSA* lpOP;
625 } OLEUILINKPROPSA, *POLEUILINKPROPSA, *LPOLEUILINKPROPSA;
626
627 typedef struct tagOLEUILINKPROPSW
628 {
629     DWORD           cbStruct;
630     DWORD           dwFlags;
631     DWORD           dwReserved1[2];
632     LPFNOLEUIHOOK   lpfnHook;
633     LPARAM          lCustData;
634     DWORD           dwReserved2[3];
635     struct tagOLEUIOBJECTPROPSW* lpOP;
636 } OLEUILINKPROPSW, *POLEUILINKPROPSW, *LPOLEUILINKPROPSW;
637
638 DECL_WINELIB_TYPE_AW(OLEUILINKPROPS)
639 DECL_WINELIB_TYPE_AW(POLEUILINKPROPS)
640 DECL_WINELIB_TYPE_AW(LPOLEUILINKPROPS)
641
642 typedef struct tagOLEUIOBJECTPROPSA
643 {
644     DWORD                cbStruct;
645     DWORD                dwFlags;
646     LPPROPSHEETHEADERA   lpPS;
647     DWORD                dwObject;
648     LPOLEUIOBJINFOA      lpObjInfo;
649     DWORD                dwLink;
650     LPOLEUILINKINFOA     lpLinkInfo;
651     LPOLEUIGNRLPROPSA    lpGP;
652     LPOLEUIVIEWPROPSA    lpVP;
653     LPOLEUILINKPROPSA    lpLP;
654 } OLEUIOBJECTPROPSA, *POLEUIOBJECTPROPSA, *LPOLEUIOBJECTPROPSA;
655
656 typedef struct tagOLEUIOBJECTPROPSW
657 {
658     DWORD                cbStruct;
659     DWORD                dwFlags;
660     LPPROPSHEETHEADERW   lpPS;
661     DWORD                dwObject;
662     LPOLEUIOBJINFOW      lpObjInfo;
663     DWORD                dwLink;
664     LPOLEUILINKINFOW     lpLinkInfo;
665     LPOLEUIGNRLPROPSW    lpGP;
666     LPOLEUIVIEWPROPSW    lpVP;
667     LPOLEUILINKPROPSW    lpLP;
668 } OLEUIOBJECTPROPSW, *POLEUIOBJECTPROPSW, *LPOLEUIOBJECTPROPSW;
669
670 DECL_WINELIB_TYPE_AW(OLEUIOBJECTPROPS)
671 DECL_WINELIB_TYPE_AW(POLEUIOBJECTPROPS)
672 DECL_WINELIB_TYPE_AW(LPOLEUIOBJECTPROPS)
673
674 #define OPF_OBJECTISLINK                0x00000001L
675 #define OPF_NOFILLDEFAULT               0x00000002L
676 #define OPF_SHOWHELP                    0x00000004L
677 #define OPF_DISABLECONVERT              0x00000008L
678
679
680 /************************************************************************************
681  * CHANGE SOURCE DIALOG
682  */
683
684
685 typedef struct tagOLEUICHANGESOURCEW
686 {
687     DWORD           cbStruct;
688     DWORD           dwFlags;
689     HWND            hWndOwner;
690     LPCWSTR         lpszCaption;
691     LPFNOLEUIHOOK   lpfnHook;
692     LPARAM          lCustData;
693     HINSTANCE       hInstance;
694     LPCWSTR         lpszTemplate;
695     HRSRC           hResource;
696     OPENFILENAMEW*lpOFN;
697     DWORD           dwReserved1[4];
698     LPOLEUILINKCONTAINERW lpOleUILinkContainer;
699     DWORD           dwLink;
700     LPWSTR          lpszDisplayName;
701     ULONG           nFileLength;
702     LPWSTR          lpszFrom;
703     LPWSTR          lpszTo;
704 } OLEUICHANGESOURCEW, *POLEUICHANGESOURCEW, *LPOLEUICHANGESOURCEW;
705
706
707 typedef struct tagOLEUICHANGESOURCEA
708 {
709     DWORD           cbStruct;
710     DWORD           dwFlags;
711     HWND            hWndOwner;
712     LPCSTR          lpszCaption;
713     LPFNOLEUIHOOK   lpfnHook;
714     LPARAM          lCustData;
715     HINSTANCE       hInstance;
716     LPCSTR          lpszTemplate;
717     HRSRC           hResource;
718     OPENFILENAMEA*  lpOFN;
719     DWORD           dwReserved1[4];
720     LPOLEUILINKCONTAINERA lpOleUILinkContainer;
721     DWORD           dwLink;
722     LPSTR           lpszDisplayName;
723     ULONG           nFileLength;
724     LPSTR           lpszFrom;
725     LPSTR           lpszTo;
726 } OLEUICHANGESOURCEA, *POLEUICHANGESOURCEA, *LPOLEUICHANGESOURCEA;
727
728
729 DECL_WINELIB_TYPE_AW(OLEUICHANGESOURCE)
730 DECL_WINELIB_TYPE_AW(POLEUICHANGESOURCE)
731 DECL_WINELIB_TYPE_AW(LPOLEUICHANGESOURCE)
732
733 /* Change Source Dialog flags */
734 #define CSF_SHOWHELP                    0x00000001L
735 #define CSF_VALIDSOURCE                 0x00000002L
736 #define CSF_ONLYGETSOURCE               0x00000004L
737 #define CSF_EXPLORER                    0x00000008L
738
739
740 /*****************************************************************************
741  * IOleUILinkContainer interface
742  */
743 #define INTERFACE   IOleUILinkContainerA
744 DECLARE_INTERFACE_(IOleUILinkContainerA,IUnknown)
745 {
746     /*** IUnknown methods ***/
747     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
748     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
749     STDMETHOD_(ULONG,Release)(THIS) PURE;
750     /*** IOleUILinkContainerA methods ***/
751     STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE;
752     STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD dwUpdateOpt) PURE;
753     STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD *lpdwUpdateOpt) PURE;
754     STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink, LPSTR lpszDisplayName,
755                 ULONG lenFileName, ULONG *pchEaten, BOOL fValidateSource) PURE;
756     STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink, LPSTR *lplpszDisplayName, ULONG *lplenFileName,
757                 LPSTR *lplpszFullLinkType,  LPSTR *lplpszShortLinkType,
758                 BOOL *lpfSourceAvailable,  BOOL *lpfIsSelected) PURE;
759     STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE;
760     STDMETHOD(UpdateLink)(THIS_ DWORD dwLink, BOOL fErrorMessage, BOOL fReserved) PURE;
761     STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
762 };
763 #undef INTERFACE
764
765 #define INTERFACE   IOleUILinkContainerW
766 DECLARE_INTERFACE_(IOleUILinkContainerW,IUnknown)
767 {
768     /*** IUnknown methods ***/
769     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
770     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
771     STDMETHOD_(ULONG,Release)(THIS) PURE;
772     /*** IOleUILinkContainerW methods ***/
773     STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE;
774     STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink,  DWORD dwUpdateOpt) PURE;
775     STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink,  DWORD *lpdwUpdateOpt) PURE;
776     STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink,  LPWSTR lpszDisplayName,
777                 ULONG lenFileName,  ULONG *pchEaten,  BOOL fValidateSource) PURE;
778     STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink, LPWSTR *lplpszDisplayName, ULONG *lplenFileName,
779                 LPWSTR *lplpszFullLinkType,  LPWSTR *lplpszShortLinkType,
780                 BOOL *lpfSourceAvailable,  BOOL *lpfIsSelected) PURE;
781     STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE;
782     STDMETHOD(UpdateLink)(THIS_ DWORD dwLink, BOOL fErrorMessage, BOOL fReserved) PURE;
783     STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
784 };
785 #undef INTERFACE
786
787 DECL_WINELIB_TYPE_AW(IOleUILinkContainer)
788 DECL_WINELIB_TYPE_AW(POLEUILINKCONTAINER)
789 DECL_WINELIB_TYPE_AW(LPOLEUILINKCONTAINER)
790
791 #if !defined(__cplusplus) || defined(CINTERFACE)
792 /*** IUnknown methods ***/
793 #define IOleUILinkContainer_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
794 #define IOleUILinkContainer_AddRef(p)                      (p)->lpVtbl->AddRef(p)
795 #define IOleUILinkContainer_Release(p)                     (p)->lpVtbl->Release(p)
796 /*** IOleUILinkContainer methods ***/
797 #define IOleUILinkContainer_GetNextLink(p,a)               (p)->lpVtbl->GetNextLink(p,a)
798 #define IOleUILinkContainer_SetLinkUpdateOptions(p,a,b)    (p)->lpVtbl->SetLinkUpdateOptions(p,a,b)
799 #define IOleUILinkContainer_GetLinkUpdateOptions(p,a,b)    (p)->lpVtbl->GetLinkUpdateOptions(p,a,b)
800 #define IOleUILinkContainer_SetLinkSource(p,a,b,c,d,e)     (p)->lpVtbl->SetLinkSource(p,a,b,c,d,e)
801 #define IOleUILinkContainer_GetLinkSource(p,a,b,c,d,e,f,g) (p)->lpVtbl->GetLinkSource(p,a,b,c,d,e,f,g)
802 #define IOleUILinkContainer_OpenLinkSource(p,a)            (p)->lpVtbl->OpenLinkSource(p,a)
803 #define IOleUILinkContainer_UpdateLink(p,a,b,c)            (p)->lpVtbl->UpdateLink(p,a,b,c)
804 #define IOleUILinkContainer_CancelLink(p,a)                (p)->lpVtbl->CancelLink(p,a)
805 #endif
806
807
808 /*****************************************************************************
809  * IOleUILinkInfo interface
810  */
811 #define INTERFACE   IOleUILinkInfoA
812 DECLARE_INTERFACE_(IOleUILinkInfoA,IOleUILinkContainerA)
813 {
814     /*** IUnknown methods ***/
815     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
816     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
817     STDMETHOD_(ULONG,Release)(THIS) PURE;
818     /*** IOleUILinkContainerA methods ***/
819     STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE;
820     STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD dwUpdateOpt) PURE;
821     STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD *lpdwUpdateOpt) PURE;
822     STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink, LPSTR lpszDisplayName,
823                 ULONG lenFileName, ULONG *pchEaten, BOOL fValidateSource) PURE;
824     STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink, LPSTR *lplpszDisplayName, ULONG *lplenFileName,
825                 LPSTR *lplpszFullLinkType,  LPSTR *lplpszShortLinkType,
826                 BOOL *lpfSourceAvailable,  BOOL *lpfIsSelected) PURE;
827     STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE;
828     STDMETHOD(UpdateLink)(THIS_ DWORD dwLink, BOOL fErrorMessage, BOOL fReserved) PURE;
829     STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
830     /*** IOleUILinkInfoA methods ***/
831     STDMETHOD(GetLastUpdate)(THIS_ DWORD dwLink,  FILETIME *lpLastUpdate) PURE;
832 };
833 #undef INTERFACE
834
835 #define INTERFACE   IOleUILinkInfoW
836 DECLARE_INTERFACE_(IOleUILinkInfoW,IOleUILinkContainerW)
837 {
838     /*** IUnknown methods ***/
839     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
840     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
841     STDMETHOD_(ULONG,Release)(THIS) PURE;
842     /*** IOleUILinkContainerW methods ***/
843     STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE;
844     STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink,  DWORD dwUpdateOpt) PURE;
845     STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink,  DWORD *lpdwUpdateOpt) PURE;
846     STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink,  LPWSTR lpszDisplayName,
847                 ULONG lenFileName,  ULONG *pchEaten,  BOOL fValidateSource) PURE;
848     STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink, LPWSTR *lplpszDisplayName, ULONG *lplenFileName,
849                 LPWSTR *lplpszFullLinkType,  LPWSTR *lplpszShortLinkType,
850                 BOOL *lpfSourceAvailable,  BOOL *lpfIsSelected) PURE;
851     STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE;
852     STDMETHOD(UpdateLink)(THIS_ DWORD dwLink, BOOL fErrorMessage, BOOL fReserved) PURE;
853     STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
854     /*** IOleUILinkInfoW methods ***/
855     STDMETHOD(GetLastUpdate)(THIS_ DWORD dwLink,  FILETIME *lpLastUpdate) PURE;
856 };
857 #undef  INTERFACE
858
859 DECL_WINELIB_TYPE_AW(IOleUILinkInfo)
860 DECL_WINELIB_TYPE_AW(POLEUILINKINFO)
861 DECL_WINELIB_TYPE_AW(LPOLEUILINKINFO)
862
863 #if !defined(__cplusplus) || defined(CINTERFACE)
864 /*** IUnknown methods ***/
865 #define IOleUILinkInfo_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
866 #define IOleUILinkInfo_AddRef(p)                      (p)->lpVtbl->AddRef(p)
867 #define IOleUILinkInfo_Release(p)                     (p)->lpVtbl->Release(p)
868 /*** IOleUILinkContainer methods ***/
869 #define IOleUILinkInfo_GetNextLink(p,a)               (p)->lpVtbl->GetNextLink(p,a)
870 #define IOleUILinkInfo_SetLinkUpdateOptions(p,a,b)    (p)->lpVtbl->SetLinkUpdateOptions(p,a,b)
871 #define IOleUILinkInfo_GetLinkUpdateOptions(p,a,b)    (p)->lpVtbl->GetLinkUpdateOptions(p,a,b)
872 #define IOleUILinkInfo_SetLinkSource(p,a,b,c,d,e)     (p)->lpVtbl->SetLinkSource(p,a,b,c,d,e)
873 #define IOleUILinkInfo_GetLinkSource(p,a,b,c,d,e,f,g) (p)->lpVtbl->GetLinkSource(p,a,b,c,d,e,f,g)
874 #define IOleUILinkInfo_OpenLinkSource(p,a)            (p)->lpVtbl->OpenLinkSource(p,a)
875 #define IOleUILinkInfo_UpdateLink(p,a,b,c)            (p)->lpVtbl->UpdateLink(p,a,b,c)
876 #define IOleUILinkInfo_CancelLink(p,a)                (p)->lpVtbl->CancelLink(p,a)
877 /*** IOleUILinkInfo methods ***/
878 #define IOleUILinkInfo_GetLastUpdate(p,a,b)           (p)->lpVtbl->GetLastUpdate(p,a,b)
879 #endif
880
881
882 /*****************************************************************************
883  * IOleUIObjInfo interface
884  */
885 #define INTERFACE   IOleUIObjInfoA
886 DECLARE_INTERFACE_(IOleUIObjInfoA,IUnknown)
887 {
888     /*** IUnknown methods ***/
889     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
890     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
891     STDMETHOD_(ULONG,Release)(THIS) PURE;
892     /*** IOleUIObjInfoA methods ***/
893     STDMETHOD(GetObjectInfo)(THIS_ DWORD dwObject, DWORD *lpdwObjSize, LPSTR *lplpszLabel,
894                 LPSTR *lplpszType, LPSTR *lplpszShortType, LPSTR *lplpszLocation) PURE;
895     STDMETHOD(GetConvertInfo)(THIS_ DWORD dwObject, CLSID *lpClassID, WORD *lpwFormat,
896                 CLSID *lpConvertDefaultClassID, LPCLSID *lplpClsidExclude, UINT *lpcClsidExclude) PURE;
897     STDMETHOD(ConvertObject)(THIS_ DWORD dwObject,  REFCLSID clsidNew) PURE;
898     STDMETHOD(GetViewInfo)(THIS_ DWORD dwObject, HGLOBAL *phMetaPict, DWORD *pdvAspect, INT *pnCurrentScale) PURE;
899     STDMETHOD(SetViewInfo)(THIS_ DWORD dwObject, HGLOBAL hMetaPict, DWORD dvAspect,
900                 INT nCurrentScale, BOOL bRelativeToOrig) PURE;
901 };
902 #undef INTERFACE
903
904 #define INTERFACE   IOleUIObjInfoW
905 DECLARE_INTERFACE_(IOleUIObjInfoW,IUnknown)
906 {
907     /*** IUnknown methods ***/
908     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
909     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
910     STDMETHOD_(ULONG,Release)(THIS) PURE;
911     /*** IOleUIObjInfoW methods ***/
912     STDMETHOD(GetObjectInfo)(THIS_ DWORD dwObject, DWORD *lpdwObjSize, LPWSTR *lplpszLabel,
913                 LPWSTR *lplpszType,  LPWSTR *lplpszShortType,  LPWSTR *lplpszLocation) PURE;
914     STDMETHOD(GetConvertInfo)(THIS_ DWORD dwObject, CLSID *lpClassID, WORD *lpwFormat,
915                 CLSID *lpConvertDefaultClassID, LPCLSID *lplpClsidExclude, UINT *lpcClsidExclude) PURE;
916     STDMETHOD(ConvertObject)(THIS_ DWORD dwObject,  REFCLSID clsidNew) PURE;
917     STDMETHOD(GetViewInfo)(THIS_ DWORD dwObject, HGLOBAL *phMetaPict, DWORD *pdvAspect, INT *pnCurrentScale) PURE;
918     STDMETHOD(SetViewInfo)(THIS_ DWORD dwObject, HGLOBAL hMetaPict, DWORD dvAspect,
919                 INT nCurrentScale, BOOL bRelativeToOrig) PURE;
920 };
921 #undef INTERFACE
922
923 DECL_WINELIB_TYPE_AW(IOleUIObjInfo)
924 DECL_WINELIB_TYPE_AW(POLEUIOBJINFO)
925 DECL_WINELIB_TYPE_AW(LPOLEUIOBJINFO)
926
927 #if !defined(__cplusplus) || defined(CINTERFACE)
928 /*** IUnknown methods ***/
929 #define IOleUIObjInfo_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
930 #define IOleUIObjInfo_AddRef(p)                        (p)->lpVtbl->AddRef(p)
931 #define IOleUIObjInfo_Release(p)                       (p)->lpVtbl->Release(p)
932 /*** IOleUIObjInfo methods ***/
933 #define IOleUIObjInfo_GetObjectInfo(p,a,b,c,d,e,f)     (p)->lpVtbl->GetObjectInfo(p,a,b,c,d,e,f)
934 #define IOleUIObjInfo_GetConvertInfo(p,a,b,c,d,e,f)    (p)->lpVtbl->GetConvertInfo(p,a,b,c,d,e,f)
935 #define IOleUIObjInfo_ConvertObject(p,a,b)             (p)->lpVtbl->ConvertObject(p,a,b)
936 #define IOleUIObjInfo_GetViewInfo(p,a,b,c,d)           (p)->lpVtbl->GetViewInfo(p,a,b,c,d)
937 #define IOleUIObjInfo_SetViewInfo(p,a,b,c,d,e)         (p)->lpVtbl->SetViewInfo(p,a,b,c,d,e)
938 #endif
939
940 UINT WINAPI  OleUIInsertObjectW(LPOLEUIINSERTOBJECTW);
941 UINT WINAPI  OleUIInsertObjectA(LPOLEUIINSERTOBJECTA);
942 #define      OleUIInsertObject WINELIB_NAME_AW(OleUIInsertObject)
943 UINT WINAPI  OleUIConvertA(LPOLEUICONVERTA);
944 UINT WINAPI  OleUIConvertW(LPOLEUICONVERTW);
945 #define      OleUIConvert WINELIB_NAME_AW(OleUIConvert)
946 UINT WINAPI  OleUIChangeIconA(LPOLEUICHANGEICONA);
947 UINT WINAPI  OleUIChangeIconW(LPOLEUICHANGEICONW);
948 #define      OleUIChangeIcon WINELIB_NAME_AW(OleUIChangeIcon)
949 UINT WINAPI  OleUIBusyA(LPOLEUIBUSYA);
950 UINT WINAPI  OleUIBusyW(LPOLEUIBUSYW);
951 #define      OleUIBusy WINELIB_NAME_AW(OleUIBusy)
952 UINT WINAPI  OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA);
953 UINT WINAPI  OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW);
954 #define      OleUIObjectProperties WINELIB_NAME_AW(OleUIObjectProperties)
955 UINT WINAPI  OleUIChangeSourceW(LPOLEUICHANGESOURCEW);
956 UINT WINAPI  OleUIChangeSourceA(LPOLEUICHANGESOURCEA);
957 #define      OleUIChangeSource WINELIB_NAME_AW(OleUIChangeSource)
958 UINT WINAPI  OleUIEditLinksA(LPOLEUIEDITLINKSA lpOleUIEditLinks);
959 UINT WINAPI  OleUIEditLinksW(LPOLEUIEDITLINKSW lpOleUIEditLinks);
960 #define      OleUIEditLinks WINELIB_NAME_AW(OleUIEditLinks)
961 BOOL WINAPI  OleUIUpdateLinksA(LPOLEUILINKCONTAINERA lpOleUILinkCntr, HWND hwndParent, LPSTR lpszTitle, INT cLinks);
962 BOOL WINAPI  OleUIUpdateLinksW(LPOLEUILINKCONTAINERW lpOleUILinkCntr, HWND hwndParent, LPWSTR lpszTitle, INT cLinks);
963 #define      OleUIUpdateLinks WINELIB_NAME_AW(OleUIUpdateLinks)
964 BOOL WINAPI  OleUIAddVerbMenuA(LPOLEOBJECT lpOleObj, LPCSTR lpszShortType, HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax,
965   BOOL bAddConvert, UINT idConvert, HMENU *lphMenu);
966 BOOL WINAPI  OleUIAddVerbMenuW(LPOLEOBJECT lpOleObj, LPCWSTR lpszShortType, HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax,
967   BOOL bAddConvert, UINT idConvert, HMENU *lphMenu);
968 #define      OleUIAddVerbMenu WINELIB_NAME_AW(OleUIAddVerbMenu)
969 UINT WINAPI  OleUIPasteSpecialA(LPOLEUIPASTESPECIALA lpOleUIPasteSpecial);
970 UINT WINAPI  OleUIPasteSpecialW(LPOLEUIPASTESPECIALW lpOleUIPasteSpecial);
971 #define      OleUIPasteSpecial WINELIB_NAME_AW(OleUIPasteSpecial)
972 INT  __cdecl OleUIPromptUserA(INT,HWND, ...);
973 INT  __cdecl OleUIPromptUserW(INT,HWND, ...);
974 #define      OleUIPromptUser WINELIB_NAME_AW(OleUIPromptUser)
975
976 #ifdef __cplusplus
977 } /* Extern "C" */
978 #endif
979
980
981 #endif  /* __WINE_OLEDLG_H */