1 /**
2  * @file ole2.h
3  * Copyright 2012, 2013 MinGW.org project
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  * DEALINGS IN THE SOFTWARE.
23  */
24 #ifndef _OLE2_H
25 #define _OLE2_H
26 #pragma GCC system_header
27 #include <_mingw.h>
28 
29 #pragma pack(push,8)
30 #include <winerror.h>
31 #include <objbase.h>
32 #include <olectlid.h>
33 #include <oleauto.h>
34 
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38 
39 #define E_DRAW VIEW_E_DRAW
40 #define DATA_E_FORMATETC DV_E_FORMATETC
41 #define OLEIVERB_PRIMARY (0L)
42 #define OLEIVERB_SHOW (-1L)
43 #define OLEIVERB_OPEN (-2L)
44 #define OLEIVERB_HIDE (-3L)
45 #define OLEIVERB_UIACTIVATE (-4L)
46 #define OLEIVERB_INPLACEACTIVATE (-5L)
47 #define OLEIVERB_DISCARDUNDOSTATE (-6L)
48 #define EMBDHLP_INPROC_HANDLER 0x0000L
49 #define EMBDHLP_INPROC_SERVER 0x0001L
50 #define EMBDHLP_CREATENOW 0x00000000L
51 #define EMBDHLP_DELAYCREATE 0x00010000L
52 #include <oleidl.h>
53 
54 typedef struct _OLESTREAMVTBL *LPOLESTREAMVTBL;
55 typedef struct _OLESTREAM {
56 	LPOLESTREAMVTBL lpstbl;
57 } OLESTREAM,*LPOLESTREAM;
58 typedef struct _OLESTREAMVTBL {
59 	DWORD (CALLBACK* Get)(LPOLESTREAM,void*,DWORD);
60 	DWORD (CALLBACK* Put)(LPOLESTREAM,const void*,DWORD);
61 } OLESTREAMVTBL;
62 
63 WINOLEAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER*);
64 WINOLEAPI_(DWORD) OleBuildVersion(void);
65 WINOLEAPI ReadClassStg(LPSTORAGE,CLSID*);
66 WINOLEAPI WriteClassStg(LPSTORAGE,REFCLSID);
67 WINOLEAPI ReadClassStm(LPSTREAM,CLSID*);
68 WINOLEAPI WriteClassStm(LPSTREAM,REFCLSID);
69 WINOLEAPI WriteFmtUserTypeStg(LPSTORAGE,CLIPFORMAT,LPOLESTR);
70 WINOLEAPI ReadFmtUserTypeStg(LPSTORAGE,CLIPFORMAT*,LPOLESTR*);
71 WINOLEAPI OleInitialize(PVOID);
72 WINOLEAPI_(void) OleUninitialize(void);
73 WINOLEAPI OleQueryLinkFromData(LPDATAOBJECT);
74 WINOLEAPI OleQueryCreateFromData(LPDATAOBJECT);
75 WINOLEAPI OleCreate(REFCLSID,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
76 WINOLEAPI OleCreateFromData(LPDATAOBJECT,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
77 WINOLEAPI OleCreateLinkFromData(LPDATAOBJECT,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
78 WINOLEAPI OleCreateStaticFromData(LPDATAOBJECT,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
79 WINOLEAPI OleCreateLink(LPMONIKER,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
80 WINOLEAPI OleCreateLinkToFile(LPCOLESTR,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
81 WINOLEAPI OleCreateFromFile(REFCLSID,LPCOLESTR,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
82 WINOLEAPI OleLoad(LPSTORAGE,REFIID,LPOLECLIENTSITE,PVOID*);
83 WINOLEAPI OleSave(LPPERSISTSTORAGE,LPSTORAGE,BOOL);
84 WINOLEAPI OleLoadFromStream(LPSTREAM,REFIID,PVOID*);
85 WINOLEAPI OleSaveToStream(LPPERSISTSTREAM,LPSTREAM);
86 WINOLEAPI OleSetContainedObject(LPUNKNOWN,BOOL);
87 WINOLEAPI OleNoteObjectVisible(LPUNKNOWN,BOOL);
88 WINOLEAPI RegisterDragDrop(HWND,LPDROPTARGET);
89 WINOLEAPI RevokeDragDrop(HWND);
90 WINOLEAPI DoDragDrop(LPDATAOBJECT,LPDROPSOURCE,DWORD,PDWORD);
91 WINOLEAPI OleSetClipboard(LPDATAOBJECT);
92 WINOLEAPI OleGetClipboard(LPDATAOBJECT*);
93 WINOLEAPI OleFlushClipboard(void);
94 WINOLEAPI OleIsCurrentClipboard(LPDATAOBJECT);
95 WINOLEAPI_(HOLEMENU) OleCreateMenuDescriptor(HMENU,LPOLEMENUGROUPWIDTHS);
96 WINOLEAPI OleSetMenuDescriptor(HOLEMENU,HWND,HWND,LPOLEINPLACEFRAME,LPOLEINPLACEACTIVEOBJECT);
97 WINOLEAPI OleDestroyMenuDescriptor(HOLEMENU);
98 WINOLEAPI OleTranslateAccelerator(LPOLEINPLACEFRAME,LPOLEINPLACEFRAMEINFO,LPMSG);
99 WINOLEAPI_(HANDLE) OleDuplicateData(HANDLE,CLIPFORMAT,UINT);
100 WINOLEAPI OleDraw(LPUNKNOWN,DWORD,HDC,LPCRECT);
101 WINOLEAPI OleRun(LPUNKNOWN);
102 WINOLEAPI_(BOOL) OleIsRunning(LPOLEOBJECT);
103 WINOLEAPI OleLockRunning(LPUNKNOWN,BOOL,BOOL);
104 WINOLEAPI_(void) ReleaseStgMedium(LPSTGMEDIUM);
105 WINOLEAPI CreateOleAdviseHolder(LPOLEADVISEHOLDER*);
106 WINOLEAPI OleCreateDefaultHandler(REFCLSID,LPUNKNOWN,REFIID,PVOID*);
107 WINOLEAPI OleCreateEmbeddingHelper(REFCLSID,LPUNKNOWN,DWORD,LPCLASSFACTORY,REFIID,PVOID*);
108 WINOLEAPI_(BOOL) IsAccelerator(HACCEL,int,LPMSG,WORD*);
109 WINOLEAPI_(HGLOBAL) OleGetIconOfFile(LPOLESTR,BOOL);
110 WINOLEAPI_(HGLOBAL) OleGetIconOfClass(REFCLSID,LPOLESTR,BOOL);
111 WINOLEAPI_(HGLOBAL) OleMetafilePictFromIconAndLabel(HICON,LPOLESTR,LPOLESTR,UINT);
112 WINOLEAPI OleRegGetUserType(REFCLSID,DWORD,LPOLESTR*);
113 WINOLEAPI OleRegGetMiscStatus(REFCLSID,DWORD,DWORD*);
114 WINOLEAPI OleRegEnumFormatEtc (REFCLSID,DWORD,LPENUMFORMATETC*);
115 WINOLEAPI OleRegEnumVerbs (REFCLSID,LPENUMOLEVERB*);
116 WINOLEAPI OleConvertOLESTREAMToIStorage(LPOLESTREAM,LPSTORAGE,const DVTARGETDEVICE*);
117 WINOLEAPI OleConvertIStorageToOLESTREAM(LPSTORAGE,LPOLESTREAM);
118 WINOLEAPI GetHGlobalFromILockBytes(LPLOCKBYTES,HGLOBAL*);
119 WINOLEAPI CreateILockBytesOnHGlobal(HGLOBAL,BOOL,LPLOCKBYTES*);
120 WINOLEAPI GetHGlobalFromStream(LPSTREAM,HGLOBAL*);
121 WINOLEAPI CreateStreamOnHGlobal(HGLOBAL,BOOL,LPSTREAM*);
122 WINOLEAPI OleDoAutoConvert(LPSTORAGE,LPCLSID);
123 WINOLEAPI OleGetAutoConvert(REFCLSID,LPCLSID);
124 WINOLEAPI OleSetAutoConvert(REFCLSID,REFCLSID);
125 WINOLEAPI GetConvertStg(LPSTORAGE);
126 WINOLEAPI SetConvertStg(LPSTORAGE,BOOL);
127 WINOLEAPI OleConvertIStorageToOLESTREAMEx(LPSTORAGE,CLIPFORMAT,LONG,LONG,DWORD,LPSTGMEDIUM,LPOLESTREAM);
128 WINOLEAPI OleConvertOLESTREAMToIStorageEx(LPOLESTREAM,LPSTORAGE,CLIPFORMAT*,LONG*,LONG*,DWORD*,LPSTGMEDIUM);
129 
130 #ifdef __cplusplus
131 }
132 #endif
133 
134 #pragma pack(pop)
135 
136 #endif
137