- Some fixes on DirectSound init (need SetCooperativeLevel as seen in
[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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20
21 #ifndef __WINE_OLEDLG_H
22 #define __WINE_OLEDLG_H
23
24 #include <commdlg.h>
25 #include <prsht.h>
26 #include <ole2.h>
27
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31
32
33 typedef struct IOleUILinkContainerA IOleUILinkContainerA, *POLEUILINKCONTAINERA, *LPOLEUILINKCONTAINERA;
34 typedef struct IOleUILinkContainerW IOleUILinkContainerW, *POLEUILINKCONTAINERW, *LPOLEUILINKCONTAINERW;
35
36 typedef struct IOleUILinkInfoA IOleUILinkInfoA, *POLEUILINKINFOA, *LPOLEUILINKINFOA;
37 typedef struct IOleUILinkInfoW IOleUILinkInfoW, *POLEUILINKINFOW, *LPOLEUILINKINFOW;
38
39 typedef struct IOleUIObjInfoA IOleUIObjInfoA, *POLEUIOBJINFOA, *LPOLEUIOBJINFOA;
40 typedef struct IOleUIObjInfoW IOleUIObjInfoW, *POLEUIOBJINFOW, *LPOLEUIOBJINFOW;
41
42 #define IDC_OLEUIHELP                   99
43
44 /* Change Source Dialog flags */
45 #define CSF_SHOWHELP                    0x00000001L
46 #define CSF_VALIDSOURCE                 0x00000002L
47 #define CSF_ONLYGETSOURCE               0x00000004L
48 #define CSF_EXPLORER                    0x00000008L
49
50 #define PSF_SHOWHELP                    0x00000001L
51 #define PSF_SELECTPASTE                 0x00000002L
52 #define PSF_SELECTPASTELINK             0x00000004L
53 #define PSF_CHECKDISPLAYASICON          0x00000008L
54 #define PSF_DISABLEDISPLAYASICON        0x00000010L
55 #define PSF_HIDECHANGEICON              0x00000020L
56 #define PSF_STAYONCLIPBOARDCHANGE       0x00000040L
57 #define PSF_NOREFRESHDATAOBJECT         0x00000080L
58
59 #define IOF_SHOWHELP                    0x00000001L
60 #define IOF_SELECTCREATENEW             0x00000002L
61 #define IOF_SELECTCREATEFROMFILE        0x00000004L
62 #define IOF_CHECKLINK                   0x00000008L
63 #define IOF_CHECKDISPLAYASICON          0x00000010L
64 #define IOF_CREATENEWOBJECT             0x00000020L
65 #define IOF_CREATEFILEOBJECT            0x00000040L
66 #define IOF_CREATELINKOBJECT            0x00000080L
67 #define IOF_DISABLELINK                 0x00000100L
68 #define IOF_VERIFYSERVERSEXIST          0x00000200L
69 #define IOF_DISABLEDISPLAYASICON        0x00000400L
70 #define IOF_HIDECHANGEICON              0x00000800L
71 #define IOF_SHOWINSERTCONTROL           0x00001000L
72 #define IOF_SELECTCREATECONTROL         0x00002000L
73
74 #define CF_SHOWHELPBUTTON               0x00000001L
75 #define CF_SETCONVERTDEFAULT            0x00000002L
76 #define CF_SETACTIVATEDEFAULT           0x00000004L
77 #define CF_SELECTCONVERTTO              0x00000008L
78 #define CF_SELECTACTIVATEAS             0x00000010L
79 #define CF_DISABLEDISPLAYASICON         0x00000020L
80 #define CF_DISABLEACTIVATEAS            0x00000040L
81 #define CF_HIDECHANGEICON               0x00000080L
82 #define CF_CONVERTONLY                  0x00000100L
83
84 #define CIF_SHOWHELP                    0x00000001L
85 #define CIF_SELECTCURRENT               0x00000002L
86 #define CIF_SELECTDEFAULT               0x00000004L
87 #define CIF_SELECTFROMFILE              0x00000008L
88 #define CIF_USEICONEXE                  0x00000010L
89
90 #define BZ_DISABLECANCELBUTTON          0x00000001L
91 #define BZ_DISABLESWITCHTOBUTTON        0x00000002L
92 #define BZ_DISABLERETRYBUTTON           0x00000004L
93 #define BZ_NOTRESPONDINGDIALOG          0x00000008L
94
95 #define OLEUI_ERR_STANDARDMAX           116
96
97 #define OLEUI_BZERR_HTASKINVALID        (OLEUI_ERR_STANDARDMAX+0)
98 #define OLEUI_BZ_SWITCHTOSELECTED       (OLEUI_ERR_STANDARDMAX+1)
99 #define OLEUI_BZ_RETRYSELECTED          (OLEUI_ERR_STANDARDMAX+2)
100 #define OLEUI_BZ_CALLUNBLOCKED          (OLEUI_ERR_STANDARDMAX+3)
101
102 #define OLEUI_FALSE   0
103 #define OLEUI_SUCCESS 1 /* Same as OLEUI_OK */
104 #define OLEUI_OK      1 /* OK button pressed */
105 #define OLEUI_CANCEL  2 /* Cancel button pressed */
106
107 #define OPF_OBJECTISLINK                0x00000001L
108 #define OPF_NOFILLDEFAULT               0x00000002L
109 #define OPF_SHOWHELP                    0x00000004L
110 #define OPF_DISABLECONVERT              0x00000008L
111
112 typedef UINT (CALLBACK *LPFNOLEUIHOOK)(HWND, UINT, WPARAM, LPARAM);
113
114 /*****************************************************************************
115  * INSERT OBJECT DIALOG
116  */
117 typedef struct tagOLEUIINSERTOBJECTA
118 {
119     DWORD           cbStruct;
120     DWORD           dwFlags;
121     HWND            hWndOwner;
122     LPCSTR          lpszCaption;
123     LPFNOLEUIHOOK   lpfnHook;
124     LPARAM          lCustData;
125     HINSTANCE       hInstance;
126     LPCSTR          lpszTemplate;
127     HRSRC           hResource;
128     CLSID           clsid;
129     LPSTR           lpszFile;
130     UINT            cchFile;
131     UINT            cClsidExclude;
132     LPCLSID         lpClsidExclude;
133     IID             iid;
134     DWORD           oleRender;
135     LPFORMATETC     lpFormatEtc;
136     LPOLECLIENTSITE lpIOleClientSite;
137     LPSTORAGE       lpIStorage;
138     LPVOID          *ppvObj;
139     SCODE           sc;
140     HGLOBAL         hMetaPict;
141 } OLEUIINSERTOBJECTA, *POLEUIINSERTOBJECTA, *LPOLEUIINSERTOBJECTA;
142
143 typedef struct tagOLEUIINSERTOBJECTW
144 {
145     DWORD           cbStruct;
146     DWORD           dwFlags;
147     HWND            hWndOwner;
148     LPCWSTR         lpszCaption;
149     LPFNOLEUIHOOK   lpfnHook;
150     LPARAM          lCustData;
151     HINSTANCE       hInstance;
152     LPCWSTR         lpszTemplate;
153     HRSRC           hResource;
154     CLSID           clsid;
155     LPWSTR          lpszFile;
156     UINT            cchFile;
157     UINT            cClsidExclude;
158     LPCLSID         lpClsidExclude;
159     IID             iid;
160     DWORD           oleRender;
161     LPFORMATETC     lpFormatEtc;
162     LPOLECLIENTSITE lpIOleClientSite;
163     LPSTORAGE       lpIStorage;
164     LPVOID          *ppvObj;
165     SCODE           sc;
166     HGLOBAL         hMetaPict;
167 } OLEUIINSERTOBJECTW, *POLEUIINSERTOBJECTW, *LPOLEUIINSERTOBJECTW;
168
169 DECL_WINELIB_TYPE_AW(OLEUIINSERTOBJECT)
170 DECL_WINELIB_TYPE_AW(POLEUIINSERTOBJECT)
171 DECL_WINELIB_TYPE_AW(LPOLEUIINSERTOBJECT)
172
173
174 /*****************************************************************************
175  * CONVERT DIALOG
176  */
177 typedef struct tagOLEUICONVERTA
178 {
179     DWORD           cbStruct;
180     DWORD           dwFlags;
181     HWND            hWndOwner;
182     LPCSTR          lpszCaption;
183     LPFNOLEUIHOOK   lpfnHook;
184     LPARAM          lCustData;
185     HINSTANCE       hInstance;
186     LPCSTR          lpszTemplate;
187     HRSRC           hResource;
188     CLSID           clsid;
189     CLSID           clsidConvertDefault;
190     CLSID           clsidActivateDefault;
191     CLSID           clsidNew;
192     DWORD           dvAspect;
193     WORD            wFormat;
194     BOOL            fIsLinkedObject;
195     HGLOBAL         hMetaPict;
196     LPSTR           lpszUserType;
197     BOOL            fObjectsIconChanged;
198     LPSTR           lpszDefLabel;
199     UINT            cClsidExclude;
200     LPCLSID         lpClsidExclude;
201 } OLEUICONVERTA, *POLEUICONVERTA, *LPOLEUICONVERTA;
202
203 typedef struct tagOLEUICONVERTW
204 {
205     DWORD           cbStruct;
206     DWORD           dwFlags;
207     HWND            hWndOwner;
208     LPCWSTR         lpszCaption;
209     LPFNOLEUIHOOK   lpfnHook;
210     LPARAM          lCustData;
211     HINSTANCE       hInstance;
212     LPCWSTR         lpszTemplate;
213     HRSRC           hResource;
214     CLSID           clsid;
215     CLSID           clsidConvertDefault;
216     CLSID           clsidActivateDefault;
217     CLSID           clsidNew;
218     DWORD           dvAspect;
219     WORD            wFormat;
220     BOOL            fIsLinkedObject;
221     HGLOBAL         hMetaPict;
222     LPWSTR          lpszUserType;
223     BOOL            fObjectsIconChanged;
224     LPWSTR          lpszDefLabel;
225     UINT            cClsidExclude;
226     LPCLSID         lpClsidExclude;
227 } OLEUICONVERTW, *POLEUICONVERTW, *LPOLEUICONVERTW;
228
229 DECL_WINELIB_TYPE_AW(OLEUICONVERT)
230 DECL_WINELIB_TYPE_AW(POLEUICONVERT)
231 DECL_WINELIB_TYPE_AW(LPOLEUICONVERT)
232
233 /*****************************************************************************
234  * CHANGE ICON DIALOG
235  */
236 typedef struct tagOLEUICHANGEICONA
237 {
238     DWORD           cbStruct;
239     DWORD           dwFlags;
240     HWND            hWndOwner;
241     LPCSTR          lpszCaption;
242     LPFNOLEUIHOOK   lpfnHook;
243     LPARAM          lCustData;
244     HINSTANCE       hInstance;
245     LPCSTR          lpszTemplate;
246     HRSRC           hResource;
247     HGLOBAL         hMetaPict;
248     CLSID           clsid;
249     CHAR            szIconExe[MAX_PATH];
250     INT             cchIconExe;
251 } OLEUICHANGEICONA, *POLEUICHANGEICONA, *LPOLEUICHANGEICONA;
252
253 typedef struct tagOLEUICHANGEICONW
254 {
255     DWORD           cbStruct;
256     DWORD           dwFlags;
257     HWND            hWndOwner;
258     LPCWSTR         lpszCaption;
259     LPFNOLEUIHOOK   lpfnHook;
260     LPARAM          lCustData;
261     HINSTANCE       hInstance;
262     LPCWSTR         lpszTemplate;
263     HRSRC           hResource;
264     HGLOBAL         hMetaPict;
265     CLSID           clsid;
266     WCHAR           szIconExe[MAX_PATH];
267     INT             cchIconExe;
268 } OLEUICHANGEICONW, *POLEUICHANGEICONW, *LPOLEUICHANGEICONW;
269
270 DECL_WINELIB_TYPE_AW(OLEUICHANGEICON)
271 DECL_WINELIB_TYPE_AW(POLEUICHANGEICON)
272 DECL_WINELIB_TYPE_AW(LPOLEUICHANGEICON)
273
274
275 /*****************************************************************************
276  * PASTE SPECIAL DIALOG
277  */
278
279 typedef enum tagOLEUIPASTEFLAG
280 {
281    OLEUIPASTE_ENABLEICON    = 2048,
282    OLEUIPASTE_PASTEONLY     = 0,
283    OLEUIPASTE_PASTE         = 512,
284    OLEUIPASTE_LINKANYTYPE   = 1024,
285    OLEUIPASTE_LINKTYPE1     = 1,
286    OLEUIPASTE_LINKTYPE2     = 2,
287    OLEUIPASTE_LINKTYPE3     = 4,
288    OLEUIPASTE_LINKTYPE4     = 8,
289    OLEUIPASTE_LINKTYPE5     = 16,
290    OLEUIPASTE_LINKTYPE6     = 32,
291    OLEUIPASTE_LINKTYPE7     = 64,
292    OLEUIPASTE_LINKTYPE8     = 128
293 } OLEUIPASTEFLAG;
294
295 typedef struct tagOLEUIPASTEENTRYA
296 {
297    FORMATETC        fmtetc;
298    LPCSTR           lpstrFormatName;
299    LPCSTR           lpstrResultText;
300    DWORD            dwFlags;
301    DWORD            dwScratchSpace;
302 } OLEUIPASTEENTRYA, *POLEUIPASTEENTRYA, *LPOLEUIPASTEENTRYA;
303
304 typedef struct tagOLEUIPASTEENTRYW
305 {
306    FORMATETC        fmtetc;
307    LPCWSTR          lpstrFormatName;
308    LPCWSTR          lpstrResultText;
309    DWORD            dwFlags;
310    DWORD            dwScratchSpace;
311 } OLEUIPASTEENTRYW, *POLEUIPASTEENTRYW, *LPOLEUIPASTEENTRYW;
312
313 DECL_WINELIB_TYPE_AW(OLEUIPASTEENTRY)
314 DECL_WINELIB_TYPE_AW(POLEUIPASTEENTRY)
315 DECL_WINELIB_TYPE_AW(LPOLEUIPASTEENTRY)
316
317 typedef struct tagOLEUIPASTESPECIALA
318 {
319     DWORD           cbStruct;
320     DWORD           dwFlags;
321     HWND            hWndOwner;
322     LPCSTR          lpszCaption;
323     LPFNOLEUIHOOK   lpfnHook;
324     LPARAM          lCustData;
325     HINSTANCE       hInstance;
326     LPCSTR          lpszTemplate;
327     HRSRC           hResource;
328     LPDATAOBJECT    lpSrcDataObj;
329     LPOLEUIPASTEENTRYA arrPasteEntries;
330     INT             cPasteEntries;
331     UINT*           arrLinkTypes;
332     INT             cLinkTypes;
333     UINT            cClsidExclude;
334     LPCLSID         lpClsidExclude;
335     INT             nSelectedIndex;
336     BOOL            fLink;
337     HGLOBAL         hMetaPict;
338     SIZEL           sizel;
339 } OLEUIPASTESPECIALA, *POLEUIPASTESPECIALA, *LPOLEUIPASTESPECIALA;
340
341 typedef struct tagOLEUIPASTESPECIALW
342 {
343     DWORD           cbStruct;
344     DWORD           dwFlags;
345     HWND            hWndOwner;
346     LPCWSTR         lpszCaption;
347     LPFNOLEUIHOOK   lpfnHook;
348     LPARAM          lCustData;
349     HINSTANCE       hInstance;
350     LPCWSTR         lpszTemplate;
351     HRSRC           hResource;
352     LPDATAOBJECT    lpSrcDataObj;
353     LPOLEUIPASTEENTRYW arrPasteEntries;
354     INT             cPasteEntries;
355     UINT*           arrLinkTypes;
356     INT             cLinkTypes;
357     UINT            cClsidExclude;
358     LPCLSID         lpClsidExclude;
359     INT             nSelectedIndex;
360     BOOL            fLink;
361     HGLOBAL         hMetaPict;
362     SIZEL           sizel;
363 } OLEUIPASTESPECIALW, *POLEUIPASTESPECIALW, *LPOLEUIPASTESPECIALW;
364
365 DECL_WINELIB_TYPE_AW(OLEUIPASTESPECIAL)
366 DECL_WINELIB_TYPE_AW(POLEUIPASTESPECIAL)
367 DECL_WINELIB_TYPE_AW(LPOLEUIPASTESPECIAL)
368
369 #define PSF_SHOWHELP                    0x00000001L
370 #define PSF_SELECTPASTE                 0x00000002L
371 #define PSF_SELECTPASTELINK             0x00000004L
372
373 #define PSF_CHECKDISPLAYASICON          0x00000008L
374 #define PSF_DISABLEDISPLAYASICON        0x00000010L
375 #define PSF_HIDECHANGEICON              0x00000020L
376 #define PSF_STAYONCLIPBOARDCHANGE       0x00000040L
377 #define PSF_NOREFRESHDATAOBJECT         0x00000080L
378
379 #define OLEUI_IOERR_SRCDATAOBJECTINVALID    (OLEUI_ERR_STANDARDMAX+0)
380 #define OLEUI_IOERR_ARRPASTEENTRIESINVALID  (OLEUI_ERR_STANDARDMAX+1)
381 #define OLEUI_IOERR_ARRLINKTYPESINVALID     (OLEUI_ERR_STANDARDMAX+2)
382 #define OLEUI_PSERR_CLIPBOARDCHANGED        (OLEUI_ERR_STANDARDMAX+3)
383 #define OLEUI_PSERR_GETCLIPBOARDFAILED      (OLEUI_ERR_STANDARDMAX+4)
384
385 #define ELF_SHOWHELP               0x00000001L
386 #define ELF_DISABLEUPDATENOW       0x00000002L
387 #define ELF_DISABLEOPENSOURCE      0x00000004L
388 #define ELF_DISABLECHANGESOURCE    0x00000008L
389 #define ELF_DISABLECANCELLINK      0x00000010L
390
391 typedef struct tagOLEUIEDITLINKSW
392 {
393     DWORD           cbStruct;
394     DWORD           dwFlags;
395     HWND            hWndOwner;
396     LPCWSTR         lpszCaption;
397     LPFNOLEUIHOOK   lpfnHook;
398     LPARAM          lCustData;
399     HINSTANCE       hInstance;
400     LPCWSTR         lpszTemplate;
401     HRSRC           hResource;
402     LPOLEUILINKCONTAINERW lpOleUILinkContainer;
403 } OLEUIEDITLINKSW, *POLEUIEDITLINKSW, *LPOLEUIEDITLINKSW;
404
405 typedef struct tagOLEUIEDITLINKSA
406 {
407     DWORD           cbStruct;
408     DWORD           dwFlags;
409     HWND            hWndOwner;
410     LPCSTR          lpszCaption;
411     LPFNOLEUIHOOK   lpfnHook;
412     LPARAM          lCustData;
413     HINSTANCE       hInstance;
414     LPCSTR          lpszTemplate;
415     HRSRC           hResource;
416     LPOLEUILINKCONTAINERA lpOleUILinkContainer;
417 } OLEUIEDITLINKSA, *POLEUIEDITLINKSA, *LPOLEUIEDITLINKSA;
418
419 DECL_WINELIB_TYPE_AW(OLEUIEDITLINKS)
420 DECL_WINELIB_TYPE_AW(POLEUIEDITLINKS)
421 DECL_WINELIB_TYPE_AW(LPOLEUIEDITLINKS)
422
423
424 /***********************************************************************************
425  * BUSY DIALOG
426  */
427 typedef struct tagOLEUIBUSYA
428 {
429     DWORD           cbStruct;
430     DWORD           dwFlags;
431     HWND            hWndOwner;
432     LPCSTR          lpszCaption;
433     LPFNOLEUIHOOK   lpfnHook;
434     LPARAM          lCustData;
435     HINSTANCE       hInstance;
436     LPCSTR          lpszTemplate;
437     HRSRC           hResource;
438     HTASK           hTask;
439     HWND*           lphWndDialog;
440 } OLEUIBUSYA, *POLEUIBUSYA, *LPOLEUIBUSYA;
441
442 typedef struct tagOLEUIBUSYW
443 {
444     DWORD           cbStruct;
445     DWORD           dwFlags;
446     HWND            hWndOwner;
447     LPCWSTR         lpszCaption;
448     LPFNOLEUIHOOK   lpfnHook;
449     LPARAM          lCustData;
450     HINSTANCE       hInstance;
451     LPCWSTR         lpszTemplate;
452     HRSRC           hResource;
453     HTASK           hTask;
454     HWND*           lphWndDialog;
455 } OLEUIBUSYW, *POLEUIBUSYW, *LPOLEUIBUSYW;
456
457 DECL_WINELIB_TYPE_AW(OLEUIBUSY)
458 DECL_WINELIB_TYPE_AW(POLEUIBUSY)
459 DECL_WINELIB_TYPE_AW(LPOLEUIBUSY)
460
461
462 struct tagOLEUIOBJECTPROPSW;
463 struct tagOLEUIOBJECTPROPSA;
464
465 typedef struct tagOLEUIGNRLPROPSA
466 {
467     DWORD           cbStruct;
468     DWORD           dwFlags;
469     DWORD           dwReserved1[2];
470     LPFNOLEUIHOOK   lpfnHook;
471     LPARAM          lCustData;
472     DWORD           dwReserved2[3];
473     struct tagOLEUIOBJECTPROPSA* lpOP;
474
475 } OLEUIGNRLPROPSA, *POLEUIGNRLPROPSA, *LPOLEUIGNRLPROPSA;
476
477 typedef struct tagOLEUIGNRLPROPSW
478 {
479     DWORD           cbStruct;
480     DWORD           dwFlags;
481     DWORD           dwReserved1[2];
482     LPFNOLEUIHOOK   lpfnHook;
483     LPARAM          lCustData;
484     DWORD           dwReserved2[3];
485     struct tagOLEUIOBJECTPROPSW* lpOP;
486 } OLEUIGNRLPROPSW, *POLEUIGNRLPROPSW, *LPOLEUIGNRLPROPSW;
487
488 DECL_WINELIB_TYPE_AW(OLEUIGNRLPROPS)
489 DECL_WINELIB_TYPE_AW(POLEUIGNRLPROPS)
490 DECL_WINELIB_TYPE_AW(LPOLEUIGNRLPROPS)
491
492 typedef struct tagOLEUIVIEWPROPSA
493 {
494     DWORD           cbStruct;
495     DWORD           dwFlags;
496     DWORD           dwReserved1[2];
497     LPFNOLEUIHOOK   lpfnHook;
498     LPARAM          lCustData;
499     DWORD           dwReserved2[3];
500     struct tagOLEUIOBJECTPROPSA* lpOP;
501     INT             nScaleMin;
502     INT             nScaleMax;
503 } OLEUIVIEWPROPSA, *POLEUIVIEWPROPSA, *LPOLEUIVIEWPROPSA;
504
505 typedef struct tagOLEUIVIEWPROPSW
506 {
507     DWORD           cbStruct;
508     DWORD           dwFlags;
509     DWORD           dwReserved1[2];
510     LPFNOLEUIHOOK   lpfnHook;
511     LPARAM          lCustData;
512     DWORD           dwReserved2[3];
513     struct tagOLEUIOBJECTPROPSW* lpOP;
514     INT             nScaleMin;
515     INT             nScaleMax;
516 } OLEUIVIEWPROPSW, *POLEUIVIEWPROPSW, *LPOLEUIVIEWPROPSW;
517
518 DECL_WINELIB_TYPE_AW(OLEUIVIEWPROPS)
519 DECL_WINELIB_TYPE_AW(POLEUIVIEWPROPS)
520 DECL_WINELIB_TYPE_AW(LPOLEUIVIEWPROPS)
521
522
523 #define VPF_SELECTRELATIVE          0x00000001L
524 #define VPF_DISABLERELATIVE         0x00000002L
525 #define VPF_DISABLESCALE            0x00000004L
526
527 typedef struct tagOLEUILINKPROPSA
528 {
529     DWORD           cbStruct;
530     DWORD           dwFlags;
531     DWORD           dwReserved1[2];
532     LPFNOLEUIHOOK   lpfnHook;
533     LPARAM          lCustData;
534     DWORD           dwReserved2[3];
535     struct tagOLEUIOBJECTPROPSA* lpOP;
536 } OLEUILINKPROPSA, *POLEUILINKPROPSA, *LPOLEUILINKPROPSA;
537
538 typedef struct tagOLEUILINKPROPSW
539 {
540     DWORD           cbStruct;
541     DWORD           dwFlags;
542     DWORD           dwReserved1[2];
543     LPFNOLEUIHOOK   lpfnHook;
544     LPARAM          lCustData;
545     DWORD           dwReserved2[3];
546     struct tagOLEUIOBJECTPROPSW* lpOP;
547 } OLEUILINKPROPSW, *POLEUILINKPROPSW, *LPOLEUILINKPROPSW;
548
549 DECL_WINELIB_TYPE_AW(OLEUILINKPROPS)
550 DECL_WINELIB_TYPE_AW(POLEUILINKPROPS)
551 DECL_WINELIB_TYPE_AW(LPOLEUILINKPROPS)
552
553 typedef struct tagOLEUIOBJECTPROPSA
554 {
555     DWORD                cbStruct;
556     DWORD                dwFlags;
557     LPPROPSHEETHEADERA   lpPS;
558     DWORD                dwObject;
559     LPOLEUIOBJINFOA      lpObjInfo;
560     DWORD                dwLink;
561     LPOLEUILINKINFOA     lpLinkInfo;
562     LPOLEUIGNRLPROPSA    lpGP;
563     LPOLEUIVIEWPROPSA    lpVP;
564     LPOLEUILINKPROPSA    lpLP;
565 } OLEUIOBJECTPROPSA, *POLEUIOBJECTPROPSA, *LPOLEUIOBJECTPROPSA;
566
567 typedef struct tagOLEUIOBJECTPROPSW
568 {
569     DWORD                cbStruct;
570     DWORD                dwFlags;
571     LPPROPSHEETHEADERW   lpPS;
572     DWORD                dwObject;
573     LPOLEUIOBJINFOW      lpObjInfo;
574     DWORD                dwLink;
575     LPOLEUILINKINFOW     lpLinkInfo;
576     LPOLEUIGNRLPROPSW    lpGP;
577     LPOLEUIVIEWPROPSW    lpVP;
578     LPOLEUILINKPROPSW    lpLP;
579 } OLEUIOBJECTPROPSW, *POLEUIOBJECTPROPSW, *LPOLEUIOBJECTPROPSW;
580
581 DECL_WINELIB_TYPE_AW(OLEUIOBJECTPROPS)
582 DECL_WINELIB_TYPE_AW(POLEUIOBJECTPROPS)
583 DECL_WINELIB_TYPE_AW(LPOLEUIOBJECTPROPS)
584
585 /************************************************************************************
586  * CHANGE SOURCE DIALOG
587  */
588
589
590 typedef struct tagOLEUICHANGESOURCEW
591 {
592     DWORD           cbStruct;
593     DWORD           dwFlags;
594     HWND            hWndOwner;
595     LPCWSTR         lpszCaption;
596     LPFNOLEUIHOOK   lpfnHook;
597     LPARAM          lCustData;
598     HINSTANCE       hInstance;
599     LPCWSTR         lpszTemplate;
600     HRSRC           hResource;
601     OPENFILENAMEW*lpOFN;
602     DWORD           dwReserved1[4];
603     LPOLEUILINKCONTAINERW lpOleUILinkContainer;
604     DWORD           dwLink;
605     LPWSTR          lpszDisplayName;
606     ULONG           nFileLength;
607     LPWSTR          lpszFrom;
608     LPWSTR          lpszTo;
609 } OLEUICHANGESOURCEW, *POLEUICHANGESOURCEW, *LPOLEUICHANGESOURCEW;
610
611
612 typedef struct tagOLEUICHANGESOURCEA
613 {
614     DWORD           cbStruct;
615     DWORD           dwFlags;
616     HWND            hWndOwner;
617     LPCSTR          lpszCaption;
618     LPFNOLEUIHOOK   lpfnHook;
619     LPARAM          lCustData;
620     HINSTANCE       hInstance;
621     LPCSTR          lpszTemplate;
622     HRSRC           hResource;
623     OPENFILENAMEA*  lpOFN;
624     DWORD           dwReserved1[4];
625     LPOLEUILINKCONTAINERA lpOleUILinkContainer;
626     DWORD           dwLink;
627     LPSTR           lpszDisplayName;
628     ULONG           nFileLength;
629     LPSTR           lpszFrom;
630     LPSTR           lpszTo;
631 } OLEUICHANGESOURCEA, *POLEUICHANGESOURCEA, *LPOLEUICHANGESOURCEA;
632
633
634 DECL_WINELIB_TYPE_AW(OLEUICHANGESOURCE)
635 DECL_WINELIB_TYPE_AW(POLEUICHANGESOURCE)
636 DECL_WINELIB_TYPE_AW(LPOLEUICHANGESOURCE)
637
638
639 /*****************************************************************************
640  * IOleUILinkContainer interface
641  */
642 #define INTERFACE   IOleUILinkContainerA
643 #define IOleUILinkContainerA_METHODS \
644     IUnknown_METHODS \
645     STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE; \
646     STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD dwUpdateOpt) PURE; \
647     STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink, DWORD *lpdwUpdateOpt) PURE; \
648     STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink, LPSTR lpszDisplayName, \
649                 ULONG lenFileName, ULONG *pchEaten, BOOL fValidateSource) PURE; \
650     STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink, LPSTR *lplpszDisplayName, ULONG *lplenFileName, \
651                 LPSTR *lplpszFullLinkType,  LPSTR *lplpszShortLinkType, \
652                 BOOL *lpfSourceAvailable,  BOOL *lpfIsSelected) PURE; \
653     STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE; \
654     STDMETHOD(UpdateLink)(THIS_ DWORD dwLink, BOOL fErrorMessage, BOOL fReserved) PURE; \
655     STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
656 ICOM_DEFINE(IOleUILinkContainerA, IUnknown)
657 #undef INTERFACE
658
659 #define INTERFACE   IOleUILinkContainerW
660 #define IOleUILinkContainerW_METHODS \
661     IUnknown_METHODS \
662     STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD dwLink) PURE; \
663     STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD dwLink,  DWORD dwUpdateOpt) PURE; \
664     STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD dwLink,  DWORD *lpdwUpdateOpt) PURE; \
665     STDMETHOD(SetLinkSource)(THIS_ DWORD dwLink,  LPWSTR lpszDisplayName, \
666                 ULONG lenFileName,  ULONG *pchEaten,  BOOL fValidateSource) PURE; \
667     STDMETHOD(GetLinkSource)(THIS_ DWORD dwLink, LPWSTR *lplpszDisplayName, ULONG *lplenFileName, \
668                 LPWSTR *lplpszFullLinkType,  LPWSTR *lplpszShortLinkType, \
669                 BOOL *lpfSourceAvailable,  BOOL *lpfIsSelected) PURE; \
670     STDMETHOD(OpenLinkSource)(THIS_ DWORD dwLink) PURE; \
671     STDMETHOD(UpdateLink)(THIS_ DWORD dwLink, BOOL fErrorMessage, BOOL fReserved) PURE; \
672     STDMETHOD(CancelLink)(THIS_ DWORD dwLink) PURE;
673 ICOM_DEFINE(IOleUILinkContainerW, IUnknown)
674 #undef INTERFACE
675
676 DECL_WINELIB_TYPE_AW(IOleUILinkContainer)
677 DECL_WINELIB_TYPE_AW(POLEUILINKCONTAINER)
678 DECL_WINELIB_TYPE_AW(LPOLEUILINKCONTAINER)
679
680 #ifdef COBJMACROS
681 /*** IUnknown methods ***/
682 #define IOleUILinkContainer_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
683 #define IOleUILinkContainer_AddRef(p)                      (p)->lpVtbl->AddRef(p)
684 #define IOleUILinkContainer_Release(p)                     (p)->lpVtbl->Release(p)
685 /*** IOleUILinkContainer methods ***/
686 #define IOleUILinkContainer_GetNextLink(p,a)               (p)->lpVtbl->GetNextLink(p,a)
687 #define IOleUILinkContainer_SetLinkUpdateOptions(p,a,b)    (p)->lpVtbl->SetLinkUpdateOptions(p,a,b)
688 #define IOleUILinkContainer_GetLinkUpdateOptions(p,a,b)    (p)->lpVtbl->GetLinkUpdateOptions(p,a,b)
689 #define IOleUILinkContainer_SetLinkSource(p,a,b,c,d,e)     (p)->lpVtbl->SetLinkSource(p,a,b,c,d,e)
690 #define IOleUILinkContainer_GetLinkSource(p,a,b,c,d,e,f,g) (p)->lpVtbl->GetLinkSource(p,a,b,c,d,e,f,g)
691 #define IOleUILinkContainer_OpenLinkSource(p,a)            (p)->lpVtbl->OpenLinkSource(p,a)
692 #define IOleUILinkContainer_UpdateLink(p,a,b,c)            (p)->lpVtbl->UpdateLink(p,a,b,c)
693 #define IOleUILinkContainer_CancelLink(p,a)                (p)->lpVtbl->CancelLink(p,a)
694 #endif
695
696
697 /*****************************************************************************
698  * IOleUILinkInfo interface
699  */
700 #define INTERFACE   IOleUILinkInfoA
701 #define IOleUILinkInfoA_METHODS \
702     IOleUILinkContainerA_METHODS \
703     STDMETHOD(GetLastUpdate)(THIS_ DWORD dwLink,  FILETIME *lpLastUpdate) PURE;
704 ICOM_DEFINE(IOleUILinkInfoA, IOleUILinkContainerA)
705 #undef INTERFACE
706
707 #define INTERFACE   IOleUILinkInfoW
708 #define IOleUILinkInfoW_METHODS \
709     IOleUILinkContainerW_METHODS \
710     STDMETHOD(GetLastUpdate)(THIS_ DWORD dwLink,  FILETIME *lpLastUpdate) PURE;
711 ICOM_DEFINE(IOleUILinkInfoW, IOleUILinkContainerW)
712 #undef  INTERFACE
713
714 DECL_WINELIB_TYPE_AW(IOleUILinkInfo)
715 DECL_WINELIB_TYPE_AW(POLEUILINKINFO)
716 DECL_WINELIB_TYPE_AW(LPOLEUILINKINFO)
717
718 #ifdef COBJMACROS
719 /*** IUnknown methods ***/
720 #define IOleUILinkInfo_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
721 #define IOleUILinkInfo_AddRef(p)                      (p)->lpVtbl->AddRef(p)
722 #define IOleUILinkInfo_Release(p)                     (p)->lpVtbl->Release(p)
723 /*** IOleUILinkContainer methods ***/
724 #define IOleUILinkInfo_GetNextLink(p,a)               (p)->lpVtbl->GetNextLink(p,a)
725 #define IOleUILinkInfo_SetLinkUpdateOptions(p,a,b)    (p)->lpVtbl->SetLinkUpdateOptions(p,a,b)
726 #define IOleUILinkInfo_GetLinkUpdateOptions(p,a,b)    (p)->lpVtbl->GetLinkUpdateOptions(p,a,b)
727 #define IOleUILinkInfo_SetLinkSource(p,a,b,c,d,e)     (p)->lpVtbl->SetLinkSource(p,a,b,c,d,e)
728 #define IOleUILinkInfo_GetLinkSource(p,a,b,c,d,e,f,g) (p)->lpVtbl->GetLinkSource(p,a,b,c,d,e,f,g)
729 #define IOleUILinkInfo_OpenLinkSource(p,a)            (p)->lpVtbl->OpenLinkSource(p,a)
730 #define IOleUILinkInfo_UpdateLink(p,a,b,c)            (p)->lpVtbl->UpdateLink(p,a,b,c)
731 #define IOleUILinkInfo_CancelLink(p,a)                (p)->lpVtbl->CancelLink(p,a)
732 /*** IOleUILinkInfo methods ***/
733 #define IOleUILinkInfo_GetLastUpdate(p,a,b)           (p)->lpVtbl->GetLastUpdate(p,a,b)
734 #endif
735
736
737 /*****************************************************************************
738  * IOleUIObjInfo interface
739  */
740 #define INTERFACE   IOleUIObjInfoA
741 #define IOleUIObjInfoA_METHODS \
742     IUnknown_METHODS \
743     STDMETHOD(GetObjectInfo)(THIS_ DWORD dwObject, DWORD *lpdwObjSize, LPSTR *lplpszLabel, \
744                 LPSTR *lplpszType, LPSTR *lplpszShortType, LPSTR *lplpszLocation) PURE; \
745     STDMETHOD(GetConvertInfo)(THIS_ DWORD dwObject, CLSID *lpClassID, WORD *lpwFormat, \
746                 CLSID *lpConvertDefaultClassID, LPCLSID *lplpClsidExclude, UINT *lpcClsidExclude) PURE; \
747     STDMETHOD(ConvertObject)(THIS_ DWORD dwObject,  REFCLSID clsidNew) PURE; \
748     STDMETHOD(GetViewInfo)(THIS_ DWORD dwObject, HGLOBAL *phMetaPict, DWORD *pdvAspect, INT *pnCurrentScale) PURE; \
749     STDMETHOD(SetViewInfo)(THIS_ DWORD dwObject, HGLOBAL hMetaPict, DWORD dvAspect, \
750                 INT nCurrentScale, BOOL bRelativeToOrig) PURE;
751 ICOM_DEFINE(IOleUIObjInfoA, IUnknown)
752 #undef INTERFACE
753
754 #define INTERFACE   IOleUIObjInfoW
755 #define IOleUIObjInfoW_METHODS \
756     IUnknown_METHODS \
757     STDMETHOD(GetObjectInfo)(THIS_ DWORD dwObject, DWORD *lpdwObjSize, LPWSTR *lplpszLabel, \
758                 LPWSTR *lplpszType,  LPWSTR *lplpszShortType,  LPWSTR *lplpszLocation) PURE; \
759     STDMETHOD(GetConvertInfo)(THIS_ DWORD dwObject, CLSID *lpClassID, WORD *lpwFormat, \
760                 CLSID *lpConvertDefaultClassID, LPCLSID *lplpClsidExclude, UINT *lpcClsidExclude) PURE; \
761     STDMETHOD(ConvertObject)(THIS_ DWORD dwObject,  REFCLSID clsidNew) PURE; \
762     STDMETHOD(GetViewInfo)(THIS_ DWORD dwObject, HGLOBAL *phMetaPict, DWORD *pdvAspect, INT *pnCurrentScale) PURE; \
763     STDMETHOD(SetViewInfo)(THIS_ DWORD dwObject, HGLOBAL hMetaPict, DWORD dvAspect, \
764                 INT nCurrentScale, BOOL bRelativeToOrig) PURE;
765 ICOM_DEFINE(IOleUIObjInfoW, IUnknown)
766 #undef INTERFACE
767
768 DECL_WINELIB_TYPE_AW(IOleUIObjInfo)
769 DECL_WINELIB_TYPE_AW(POLEUIOBJINFO)
770 DECL_WINELIB_TYPE_AW(LPOLEUIOBJINFO)
771
772 #ifdef COBJMACROS
773 /*** IUnknown methods ***/
774 #define IOleUIObjInfo_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
775 #define IOleUIObjInfo_AddRef(p)                        (p)->lpVtbl->AddRef(p)
776 #define IOleUIObjInfo_Release(p)                       (p)->lpVtbl->Release(p)
777 /*** IOleUIObjInfo methods ***/
778 #define IOleUIObjInfo_GetObjectInfo(p,a,b,c,d,e,f)     (p)->lpVtbl->GetObjectInfo(p,a,b,c,d,e,f)
779 #define IOleUIObjInfo_GetConvertInfo(p,a,b,c,d,e,f)    (p)->lpVtbl->GetConvertInfo(p,a,b,c,d,e,f)
780 #define IOleUIObjInfo_ConvertObject(p,a,b)             (p)->lpVtbl->ConvertObject(p,a,b)
781 #define IOleUIObjInfo_GetViewInfo(p,a,b,c,d)           (p)->lpVtbl->GetViewInfo(p,a,b,c,d)
782 #define IOleUIObjInfo_SetViewInfo(p,a,b,c,d,e)         (p)->lpVtbl->SetViewInfo(p,a,b,c,d,e)
783 #endif
784
785 UINT WINAPI  OleUIInsertObjectW(LPOLEUIINSERTOBJECTW);
786 UINT WINAPI  OleUIInsertObjectA(LPOLEUIINSERTOBJECTA);
787 #define      OleUIInsertObject WINELIB_NAME_AW(OleUIInsertObject)
788 UINT WINAPI  OleUIConvertA(LPOLEUICONVERTA);
789 UINT WINAPI  OleUIConvertW(LPOLEUICONVERTW);
790 #define      OleUIConvert WINELIB_NAME_AW(OleUIConvert)
791 UINT WINAPI  OleUIChangeIconA(LPOLEUICHANGEICONA);
792 UINT WINAPI  OleUIChangeIconW(LPOLEUICHANGEICONW);
793 #define      OleUIChangeIcon WINELIB_NAME_AW(OleUIChangeIcon)
794 UINT WINAPI  OleUIBusyA(LPOLEUIBUSYA);
795 UINT WINAPI  OleUIBusyW(LPOLEUIBUSYW);
796 #define      OleUIBusy WINELIB_NAME_AW(OleUIBusy)
797 UINT WINAPI  OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA);
798 UINT WINAPI  OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW);
799 #define      OleUIObjectProperties WINELIB_NAME_AW(OleUIObjectProperties)
800 UINT WINAPI  OleUIChangeSourceW(LPOLEUICHANGESOURCEW);
801 UINT WINAPI  OleUIChangeSourceA(LPOLEUICHANGESOURCEA);
802 #define      OleUIChangeSource WINELIB_NAME_AW(OleUIChangeSource)
803 UINT WINAPI  OleUIEditLinksA(LPOLEUIEDITLINKSA lpOleUIEditLinks);
804 UINT WINAPI  OleUIEditLinksW(LPOLEUIEDITLINKSW lpOleUIEditLinks);
805 #define      OleUIEditLinks WINELIB_NAME_AW(OleUIEditLinks)
806 BOOL WINAPI  OleUIUpdateLinksA(LPOLEUILINKCONTAINERA lpOleUILinkCntr, HWND hwndParent, LPSTR lpszTitle, INT cLinks);
807 BOOL WINAPI  OleUIUpdateLinksW(LPOLEUILINKCONTAINERW lpOleUILinkCntr, HWND hwndParent, LPWSTR lpszTitle, INT cLinks);
808 #define      OleUIUpdateLinks WINELIB_NAME_AW(OleUIUpdateLinks)
809 BOOL WINAPI  OleUIAddVerbMenuA(LPOLEOBJECT lpOleObj, LPCSTR lpszShortType, HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax,
810   BOOL bAddConvert, UINT idConvert, HMENU *lphMenu);
811 BOOL WINAPI  OleUIAddVerbMenuW(LPOLEOBJECT lpOleObj, LPCWSTR lpszShortType, HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax,
812   BOOL bAddConvert, UINT idConvert, HMENU *lphMenu);
813 #define      OleUIAddVerbMenu WINELIB_NAME_AW(OleUIAddVerbMenu)
814 UINT WINAPI  OleUIPasteSpecialA(LPOLEUIPASTESPECIALA lpOleUIPasteSpecial);
815 UINT WINAPI  OleUIPasteSpecialW(LPOLEUIPASTESPECIALW lpOleUIPasteSpecial);
816 #define      OleUIPasteSpecial WINELIB_NAME_AW(OleUIPasteSpecial)
817
818
819 #ifdef __cplusplus
820 } /* Extern "C" */
821 #endif
822
823
824 #endif  /* __WINE_OLEDLG_H */