1 /**
2  * Windows API header module
3  *
4  * Part of the Internet Development SDK
5  *
6  * Translated from MinGW Windows headers
7  *
8  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
9  * Source: $(DRUNTIMESRC core/sys/windows/_ocidl.d)
10  */
11 /// Automatically imported and edited from the druntime module
12 /// core.sys.windows.ocidl for the auto-generated win32 package.
13 module win32.ocidl;
14 //version (Windows):
15 @system:
16 
17 import win32.ole2, win32.oleidl, win32.oaidl, win32.objfwd,
18   win32.windef, win32.wtypes;
19 import win32.objidl;  // for CLIPFORMAT
20 import win32.wingdi;  // for TEXTMETRICW
21 import win32.winuser; // for LPMSG
22 
23 interface IBindHost : IUnknown {}
24 
25 interface IServiceProvider : IUnknown{
26     HRESULT QueryService(REFGUID,REFIID,void**);
27 }
28 
29 /*
30 // TODO:
31 //import win32.servprov; // for IServiceProvider
32 // import win32.urlmon; // for IBindHost. This is not included in MinGW.
33 
34 // win32.urlmon should contain:
35 interface IBindHost : IUnknown
36 {
37     HRESULT CreateMoniker(LPOLESTR szName, IBindCtx pBC, IMoniker* ppmk, DWORD);
38     HRESULT MonikerBindToObject(IMoniker pMk, IBindCtx pBC, IBindStatusCallback pBSC, REFIID, void** );
39     HRESULT MonikerBindToStorage(IMoniker pMk, IBindCtx pBC, IBindStatusCallback pBSC, REFIID, void** );
40 }
41 */
42 
43 
44 
45 
46 //[Yes] #ifndef OLE2ANSI
47 alias TEXTMETRICW TEXTMETRICOLE;
48 //} else {
49 //alias TEXTMETRIC TEXTMETRICOLE;
50 //}
51 alias TEXTMETRICOLE* LPTEXTMETRICOLE;
52 
53 alias DWORD OLE_COLOR;
54 alias UINT OLE_HANDLE;
55 alias int OLE_XPOS_HIMETRIC;
56 alias int OLE_YPOS_HIMETRIC;
57 alias int OLE_XSIZE_HIMETRIC;
58 alias int OLE_YSIZE_HIMETRIC;
59 
60 enum READYSTATE {
61     READYSTATE_UNINITIALIZED = 0,
62     READYSTATE_LOADING = 1,
63     READYSTATE_LOADED = 2,
64     READYSTATE_INTERACTIVE = 3,
65     READYSTATE_COMPLETE = 4
66 }
67 
68 enum PROPBAG2_TYPE {
69     PROPBAG2_TYPE_UNDEFINED,
70     PROPBAG2_TYPE_DATA,
71     PROPBAG2_TYPE_URL,
72     PROPBAG2_TYPE_OBJECT,
73     PROPBAG2_TYPE_STREAM,
74     PROPBAG2_TYPE_STORAGE,
75     PROPBAG2_TYPE_MONIKER // = 6
76 }
77 
78 struct PROPBAG2 {
79     DWORD dwType;
80     VARTYPE vt;
81     CLIPFORMAT cfType;
82     DWORD dwHint;
83     LPOLESTR pstrName;
84     CLSID clsid;
85 }
86 
87 enum QACONTAINERFLAGS {
88     QACONTAINER_SHOWHATCHING = 1,
89     QACONTAINER_SHOWGRABHANDLES = 2,
90     QACONTAINER_USERMODE = 4,
91     QACONTAINER_DISPLAYASDEFAULT = 8,
92     QACONTAINER_UIDEAD = 16,
93     QACONTAINER_AUTOCLIP = 32,
94     QACONTAINER_MESSAGEREFLECT = 64,
95     QACONTAINER_SUPPORTSMNEMONICS = 128
96 }
97 
98 struct QACONTAINER {
99     ULONG cbSize = this.sizeof;
100     IOleClientSite pClientSite;
101     IAdviseSinkEx pAdviseSink;
102     IPropertyNotifySink pPropertyNotifySink;
103     IUnknown pUnkEventSink;
104     DWORD dwAmbientFlags;
105     OLE_COLOR colorFore;
106     OLE_COLOR colorBack;
107     IFont pFont;
108     IOleUndoManager pUndoMgr;
109     DWORD dwAppearance;
110     LONG lcid;
111     HPALETTE hpal;
112     IBindHost pBindHost;
113     IOleControlSite pOleControlSite;
114     IServiceProvider pServiceProvider;
115 }
116 
117 struct QACONTROL {
118     ULONG cbSize = this.sizeof;
119     DWORD dwMiscStatus;
120     DWORD dwViewStatus;
121     DWORD dwEventCookie;
122     DWORD dwPropNotifyCookie;
123     DWORD dwPointerActivationPolicy;
124 }
125 
126 struct POINTF {
127     float x;
128     float y;
129 }
130 alias POINTF* LPPOINTF;
131 
132 struct CONTROLINFO {
133     ULONG cb;
134     HACCEL hAccel;
135     USHORT cAccel;
136     DWORD dwFlags;
137 }
138 alias CONTROLINFO* LPCONTROLINFO;
139 
140 struct CONNECTDATA {
141     LPUNKNOWN pUnk;
142     DWORD dwCookie;
143 }
144 alias CONNECTDATA* LPCONNECTDATA;
145 
146 struct LICINFO {
147     int cbLicInfo;
148     BOOL fRuntimeKeyAvail;
149     BOOL fLicVerified;
150 }
151 alias LICINFO* LPLICINFO;
152 
153 struct CAUUID {
154     ULONG cElems;
155     GUID* pElems;
156 }
157 alias CAUUID* LPCAUUID;
158 
159 struct CALPOLESTR {
160     ULONG cElems;
161     LPOLESTR* pElems;
162 }
163 alias CALPOLESTR* LPCALPOLESTR;
164 
165 struct CADWORD {
166     ULONG cElems;
167     DWORD* pElems;
168 }
169 alias CADWORD* LPCADWORD;
170 
171 struct PROPPAGEINFO {
172     ULONG cb;
173     LPOLESTR pszTitle;
174     SIZE size;
175     LPOLESTR pszDocString;
176     LPOLESTR pszHelpFile;
177     DWORD dwHelpContext;
178 }
179 alias PROPPAGEINFO* LPPROPPAGEINFO;
180 
181 interface IOleControl : IUnknown {
182     HRESULT GetControlInfo(LPCONTROLINFO);
183     HRESULT OnMnemonic(LPMSG);
184     HRESULT OnAmbientPropertyChange(DISPID);
185     HRESULT FreezeEvents(BOOL);
186 }
187 
188 interface IOleControlSite : IUnknown {
189     HRESULT OnControlInfoChanged();
190     HRESULT LockInPlaceActive(BOOL);
191     HRESULT GetExtendedControl(LPDISPATCH*);
192     HRESULT TransformCoords(POINTL*, POINTF*, DWORD);
193     HRESULT TranslateAccelerator(LPMSG, DWORD);
194     HRESULT OnFocus(BOOL);
195     HRESULT ShowPropertyFrame();
196 }
197 
198 interface ISimpleFrameSite : IUnknown {
199     HRESULT PreMessageFilter(HWND, UINT, WPARAM, LPARAM, LRESULT*, PDWORD);
200     HRESULT PostMessageFilter(HWND, UINT, WPARAM, LPARAM, LRESULT*, DWORD);
201 }
202 
203 interface IErrorLog : IUnknown {
204     HRESULT AddError(LPCOLESTR, LPEXCEPINFO);
205 }
206 alias IErrorLog LPERRORLOG;
207 
208 interface IPropertyBag : IUnknown {
209     HRESULT Read(LPCOLESTR, LPVARIANT, LPERRORLOG);
210     HRESULT Write(LPCOLESTR, LPVARIANT);
211 }
212 alias IPropertyBag LPPROPERTYBAG;
213 
214 interface IPropertyBag2 : IUnknown {
215     HRESULT Read(ULONG, PROPBAG2*, LPERRORLOG, VARIANT*, HRESULT*);
216     HRESULT Write(ULONG, PROPBAG2*, VARIANT*);
217     HRESULT CountProperties(ULONG*);
218     HRESULT GetPropertyInfo(ULONG, ULONG, PROPBAG2*, ULONG*);
219     HRESULT LoadObject(LPCOLESTR, DWORD, IUnknown, LPERRORLOG);
220 }
221 alias IPropertyBag2 LPPROPERTYBAG2;
222 
223 interface IPersistPropertyBag : IPersist {
224     HRESULT InitNew();
225     HRESULT Load(LPPROPERTYBAG, LPERRORLOG);
226     HRESULT Save(LPPROPERTYBAG, BOOL, BOOL);
227 }
228 
229 interface IPersistPropertyBag2 : IPersist {
230     HRESULT InitNew();
231     HRESULT Load(LPPROPERTYBAG2, LPERRORLOG);
232     HRESULT Save(LPPROPERTYBAG2, BOOL, BOOL);
233     HRESULT IsDirty();
234 }
235 
236 interface IPersistStreamInit : IPersist {
237     HRESULT IsDirty();
238     HRESULT Load(LPSTREAM);
239     HRESULT Save(LPSTREAM, BOOL);
240     HRESULT GetSizeMax(PULARGE_INTEGER);
241     HRESULT InitNew();
242 }
243 
244 interface IPersistMemory : IPersist {
245     HRESULT IsDirty();
246     HRESULT Load(PVOID, ULONG);
247     HRESULT Save(PVOID, BOOL, ULONG);
248     HRESULT GetSizeMax(PULONG);
249     HRESULT InitNew();
250 }
251 
252 interface IPropertyNotifySink : IUnknown {
253     HRESULT OnChanged(DISPID);
254     HRESULT OnRequestEdit(DISPID);
255 }
256 
257 interface IProvideClassInfo : IUnknown {
258     HRESULT GetClassInfo(LPTYPEINFO*);
259 }
260 
261 interface IProvideClassInfo2 : IProvideClassInfo {
262     HRESULT GetGUID(DWORD, GUID*);
263 }
264 
265 interface IConnectionPointContainer : IUnknown {
266     HRESULT EnumConnectionPoints(LPENUMCONNECTIONPOINTS*);
267     HRESULT FindConnectionPoint(REFIID, LPCONNECTIONPOINT*);
268 }
269 
270 interface IEnumConnectionPoints : IUnknown {
271     HRESULT Next(ULONG, LPCONNECTIONPOINT*, ULONG*);
272     HRESULT Skip(ULONG);
273     HRESULT Reset();
274     HRESULT Clone(LPENUMCONNECTIONPOINTS*);
275 }
276 alias IEnumConnectionPoints LPENUMCONNECTIONPOINTS;
277 
278 interface IConnectionPoint : IUnknown {
279     HRESULT GetConnectionInterface(IID*);
280     HRESULT GetConnectionPointContainer(IConnectionPointContainer*);
281     HRESULT Advise(LPUNKNOWN, PDWORD);
282     HRESULT Unadvise(DWORD);
283     HRESULT EnumConnections(LPENUMCONNECTIONS*);
284 }
285 alias IConnectionPoint LPCONNECTIONPOINT;
286 
287 interface IEnumConnections : IUnknown {
288     HRESULT Next(ULONG, LPCONNECTDATA, PULONG);
289     HRESULT Skip(ULONG);
290     HRESULT Reset();
291     HRESULT Clone(LPENUMCONNECTIONS*);
292 }
293 alias IEnumConnections LPENUMCONNECTIONS;
294 
295 interface IClassFactory2 : IClassFactory {
296     HRESULT GetLicInfo(LPLICINFO);
297     HRESULT RequestLicKey(DWORD, BSTR*);
298     HRESULT CreateInstanceLic(LPUNKNOWN, LPUNKNOWN, REFIID, BSTR, PVOID*);
299 }
300 
301 interface ISpecifyPropertyPages : IUnknown {
302     HRESULT GetPages(CAUUID*);
303 }
304 
305 interface IPerPropertyBrowsing : IUnknown {
306     HRESULT GetDisplayString(DISPID, BSTR*);
307     HRESULT MapPropertyToPage(DISPID, LPCLSID);
308     HRESULT GetPredefinedStrings(DISPID, CALPOLESTR*, CADWORD*);
309     HRESULT GetPredefinedValue(DISPID, DWORD, VARIANT*);
310 }
311 
312 interface IPropertyPageSite : IUnknown {
313     HRESULT OnStatusChange(DWORD);
314     HRESULT GetLocaleID(LCID*);
315     HRESULT GetPageContainer(LPUNKNOWN*);
316     HRESULT TranslateAccelerator(LPMSG);
317 }
318 alias IPropertyPageSite LPPROPERTYPAGESITE;
319 
320 interface IPropertyPage : IUnknown {
321     HRESULT SetPageSite(LPPROPERTYPAGESITE);
322     HRESULT Activate(HWND, LPCRECT, BOOL);
323     HRESULT Deactivate();
324     HRESULT GetPageInfo(LPPROPPAGEINFO);
325     HRESULT SetObjects(ULONG, LPUNKNOWN*);
326     HRESULT Show(UINT);
327     HRESULT Move(LPCRECT);
328     HRESULT IsPageDirty();
329     HRESULT Apply();
330     HRESULT Help(LPCOLESTR);
331     HRESULT TranslateAccelerator(LPMSG);
332 }
333 
334 
335 interface IPropertyPage2 : IPropertyPage
336 { HRESULT EditProperty(DISPID);
337 }
338 
339 interface IFont : IUnknown {
340     HRESULT get_Name(BSTR*);
341     HRESULT put_Name(BSTR);
342     HRESULT get_Size(CY*);
343     HRESULT put_Size(CY);
344     HRESULT get_Bold(BOOL*);
345     HRESULT put_Bold(BOOL);
346     HRESULT get_Italic(BOOL*);
347     HRESULT put_Italic(BOOL);
348     HRESULT get_Underline(BOOL*);
349     HRESULT put_Underline(BOOL);
350     HRESULT get_Strikethrough(BOOL*);
351     HRESULT put_Strikethrough(BOOL);
352     HRESULT get_Weight(short*);
353     HRESULT put_Weight(short);
354     HRESULT get_Charset(short*);
355     HRESULT put_Charset(short);
356     HRESULT get_hFont(HFONT*);
357     HRESULT Clone(IFont*);
358     HRESULT IsEqual(IFont);
359     HRESULT SetRatio(int, int);
360     HRESULT QueryTextMetrics(LPTEXTMETRICOLE);
361     HRESULT AddRefHfont(HFONT);
362     HRESULT ReleaseHfont(HFONT);
363     HRESULT SetHdc(HDC);
364 }
365 alias IFont LPFONT;
366 
367 interface IFontDisp : IDispatch {
368 }
369 alias IFontDisp LPFONTDISP;
370 
371 interface IPicture : IUnknown {
372     HRESULT get_Handle(OLE_HANDLE*);
373     HRESULT get_hPal(OLE_HANDLE*);
374     HRESULT get_Type(short*);
375     HRESULT get_Width(OLE_XSIZE_HIMETRIC*);
376     HRESULT get_Height(OLE_YSIZE_HIMETRIC*);
377     HRESULT Render(HDC, int, int, int, int, OLE_XPOS_HIMETRIC,
378       OLE_YPOS_HIMETRIC, OLE_XSIZE_HIMETRIC, OLE_YSIZE_HIMETRIC, LPCRECT);
379     HRESULT set_hPal(OLE_HANDLE);
380     HRESULT get_CurDC(HDC*);
381     HRESULT SelectPicture(HDC, HDC*, OLE_HANDLE*);
382     HRESULT get_KeepOriginalFormat(BOOL*);
383     HRESULT put_KeepOriginalFormat(BOOL);
384     HRESULT PictureChanged();
385     HRESULT SaveAsFile(LPSTREAM, BOOL, LONG*);
386     HRESULT get_Attributes(PDWORD);
387 }
388 
389 interface IPictureDisp : IDispatch {
390 }
391 
392 interface IOleInPlaceSiteEx : IOleInPlaceSite {
393     HRESULT OnInPlaceActivateEx(BOOL*, DWORD);
394     HRESULT OnInPlaceDeactivateEx(BOOL);
395     HRESULT RequestUIActivate();
396 }
397 
398 interface IObjectWithSite : IUnknown {
399     HRESULT SetSite(IUnknown);
400     HRESULT GetSite(REFIID, void**);
401 }
402 
403 interface IOleInPlaceSiteWindowless : IOleInPlaceSiteEx {
404     HRESULT CanWindowlessActivate();
405     HRESULT GetCapture();
406     HRESULT SetCapture(BOOL);
407     HRESULT GetFocus();
408     HRESULT SetFocus(BOOL);
409     HRESULT GetDC(LPCRECT, DWORD, HDC*);
410     HRESULT ReleaseDC(HDC);
411     HRESULT InvalidateRect(LPCRECT, BOOL);
412     HRESULT InvalidateRgn(HRGN, BOOL);
413     HRESULT ScrollRect(INT, INT, LPCRECT, LPCRECT);
414     HRESULT AdjustRect(LPCRECT);
415     HRESULT OnDefWindowMessage(UINT, WPARAM, LPARAM, LRESULT*);
416 }
417 
418 interface IAdviseSinkEx : IUnknown {
419     void OnDataChange(FORMATETC*, STGMEDIUM*);
420     void OnViewChange(DWORD, LONG);
421     void OnRename(IMoniker);
422     void OnSave();
423     void OnClose();
424     HRESULT OnViewStatusChange(DWORD);
425 }
426 
427 interface IPointerInactive : IUnknown {
428     HRESULT GetActivationPolicy(DWORD*);
429     HRESULT OnInactiveMouseMove(LPCRECT, LONG, LONG, DWORD);
430     HRESULT OnInactiveSetCursor(LPCRECT, LONG, LONG, DWORD, BOOL);
431 }
432 
433 interface IOleUndoUnit : IUnknown {
434     HRESULT Do(LPOLEUNDOMANAGER);
435     HRESULT GetDescription(BSTR*);
436     HRESULT GetUnitType(CLSID*, LONG*);
437     HRESULT OnNextAdd();
438 }
439 
440 interface IOleParentUndoUnit : IOleUndoUnit {
441     HRESULT Open(IOleParentUndoUnit);
442     HRESULT Close(IOleParentUndoUnit, BOOL);
443     HRESULT Add(IOleUndoUnit);
444     HRESULT FindUnit(IOleUndoUnit);
445     HRESULT GetParentState(DWORD*);
446 }
447 
448 interface IEnumOleUndoUnits : IUnknown {
449     HRESULT Next(ULONG, IOleUndoUnit*, ULONG*);
450     HRESULT Skip(ULONG);
451     HRESULT Reset();
452     HRESULT Clone(IEnumOleUndoUnits*);
453 }
454 
455 interface IOleUndoManager : IUnknown {
456     HRESULT Open(IOleParentUndoUnit);
457     HRESULT Close(IOleParentUndoUnit, BOOL);
458     HRESULT Add(IOleUndoUnit);
459     HRESULT GetOpenParentState(DWORD*);
460     HRESULT DiscardFrom(IOleUndoUnit);
461     HRESULT UndoTo(IOleUndoUnit);
462     HRESULT RedoTo(IOleUndoUnit);
463     HRESULT EnumUndoable(IEnumOleUndoUnits*);
464     HRESULT EnumRedoable(IEnumOleUndoUnits*);
465     HRESULT GetLastUndoDescription(BSTR*);
466     HRESULT GetLastRedoDescription(BSTR*);
467     HRESULT Enable(BOOL);
468 }
469 alias IOleUndoManager LPOLEUNDOMANAGER;
470 
471 interface IQuickActivate : IUnknown {
472     HRESULT QuickActivate(QACONTAINER*, QACONTROL*);
473     HRESULT SetContentExtent(LPSIZEL);
474     HRESULT GetContentExtent(LPSIZEL);
475 }