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