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