1 /**
2  * Windows API header module
3  *
4  * Translated from MinGW Windows headers
5  *
6  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
7  * Source: $(DRUNTIMESRC core/sys/windows/_olectl.d)
8  */
9 module nulib.system.win32.olectl;
10 import nulib.system.win32.ocidl;
11 import nulib.system.win32.olectlid;
12 import nulib.system.win32.basetyps; 
13 import nulib.system.win32.oaidl; 
14 import nulib.system.win32.oleauto; 
15 import nulib.system.win32.windef; 
16 import nulib.system.win32.wingdi; 
17 import nulib.system.win32.winuser; 
18 import nulib.system.win32.wtypes;
19 import nulib.system.win32.ntdef;     // for NTSTATUS
20 import nulib.system.win32.winerror;  // for SCODE
21 import nulib.system.win32.objidl;
22 import nulib.system.com;
23 
24 // In conversion from MinGW, the following was deleted:
25 //#define FONTSIZE(n) {n##0000, 0}
26 
27 
28 
29 
30 private {
31     // These replace C macros.
32     template ITF_ERROR_SCODE_FOR_D(int c)
33     {
34 enum SCODE ITF_ERROR_SCODE_FOR_D
35           = (SEVERITY_ERROR << 31) | (FACILITY_ITF << 16) | c;
36     }
37 
38     template ITF_SUCCESS_SCODE_FOR_D(int c)
39     {
40 enum SCODE ITF_SUCCESS_SCODE_FOR_D
41           = (SEVERITY_SUCCESS << 31) | (FACILITY_ITF << 16) | c;
42     }
43 
44     template STD_CTL_SCODE(int c)
45     {
46 enum SCODE STD_CTL_SCODE
47           = (SEVERITY_ERROR << 31) | (FACILITY_CONTROL << 16) | c;
48     }
49 }
50 
51 enum : SCODE {
52     CTL_E_ILLEGALFUNCTIONCALL       = STD_CTL_SCODE!(5),
53     CTL_E_OVERFLOW                  = STD_CTL_SCODE!(6),
54     CTL_E_OUTOFMEMORY               = STD_CTL_SCODE!(7),
55     CTL_E_DIVISIONBYZERO            = STD_CTL_SCODE!(11),
56     CTL_E_OUTOFSTRINGSPACE          = STD_CTL_SCODE!(14),
57     CTL_E_OUTOFSTACKSPACE           = STD_CTL_SCODE!(28),
58     CTL_E_BADFILENAMEORNUMBER       = STD_CTL_SCODE!(52),
59     CTL_E_FILENOTFOUND              = STD_CTL_SCODE!(53),
60     CTL_E_BADFILEMODE               = STD_CTL_SCODE!(54),
61     CTL_E_FILEALREADYOPEN           = STD_CTL_SCODE!(55),
62     CTL_E_DEVICEIOERROR             = STD_CTL_SCODE!(57),
63     CTL_E_FILEALREADYEXISTS         = STD_CTL_SCODE!(58),
64     CTL_E_BADRECORDLENGTH           = STD_CTL_SCODE!(59),
65     CTL_E_DISKFULL                  = STD_CTL_SCODE!(61),
66     CTL_E_BADRECORDNUMBER           = STD_CTL_SCODE!(63),
67     CTL_E_BADFILENAME               = STD_CTL_SCODE!(64),
68     CTL_E_TOOMANYFILES              = STD_CTL_SCODE!(67),
69     CTL_E_DEVICEUNAVAILABLE         = STD_CTL_SCODE!(68),
70     CTL_E_PERMISSIONDENIED          = STD_CTL_SCODE!(70),
71     CTL_E_DISKNOTREADY              = STD_CTL_SCODE!(71),
72     CTL_E_PATHFILEACCESSERROR       = STD_CTL_SCODE!(75),
73     CTL_E_PATHNOTFOUND              = STD_CTL_SCODE!(76),
74     CTL_E_INVALIDPATTERNSTRING      = STD_CTL_SCODE!(93),
75     CTL_E_INVALIDUSEOFNULL          = STD_CTL_SCODE!(94),
76     CTL_E_INVALIDFILEFORMAT         = STD_CTL_SCODE!(321),
77     CTL_E_INVALIDPROPERTYVALUE      = STD_CTL_SCODE!(380),
78     CTL_E_INVALIDPROPERTYARRAYINDEX = STD_CTL_SCODE!(381),
79     CTL_E_SETNOTSUPPORTEDATRUNTIME  = STD_CTL_SCODE!(382),
80     CTL_E_SETNOTSUPPORTED           = STD_CTL_SCODE!(383),
81     CTL_E_NEEDPROPERTYARRAYINDEX    = STD_CTL_SCODE!(385),
82     CTL_E_SETNOTPERMITTED           = STD_CTL_SCODE!(387),
83     CTL_E_GETNOTSUPPORTEDATRUNTIME  = STD_CTL_SCODE!(393),
84     CTL_E_GETNOTSUPPORTED           = STD_CTL_SCODE!(394),
85     CTL_E_PROPERTYNOTFOUND          = STD_CTL_SCODE!(422),
86     CTL_E_INVALIDCLIPBOARDFORMAT    = STD_CTL_SCODE!(460),
87     CTL_E_INVALIDPICTURE            = STD_CTL_SCODE!(481),
88     CTL_E_PRINTERERROR              = STD_CTL_SCODE!(482),
89     CTL_E_CANTSAVEFILETOTEMP        = STD_CTL_SCODE!(735),
90     CTL_E_SEARCHTEXTNOTFOUND        = STD_CTL_SCODE!(744),
91     CTL_E_REPLACEMENTSTOOLONG       = STD_CTL_SCODE!(746),
92     CTL_E_CUSTOM_FIRST              = STD_CTL_SCODE!(600)
93 }
94 
95 enum SCODE CLASS_E_NOTLICENSED = CLASSFACTORY_E_FIRST+2;
96 
97 enum : SCODE {
98     CONNECT_E_FIRST           = ITF_ERROR_SCODE_FOR_D!(0x200),
99     CONNECT_E_LAST            = ITF_ERROR_SCODE_FOR_D!(0x20F),
100     CONNECT_S_FIRST           = ITF_SUCCESS_SCODE_FOR_D!(0x200),
101     CONNECT_S_LAST            = ITF_SUCCESS_SCODE_FOR_D!(0x20F),
102     CONNECT_E_NOCONNECTION    = CONNECT_E_FIRST + 0,
103     CONNECT_E_ADVISELIMIT     = CONNECT_E_FIRST + 1,
104     CONNECT_E_CANNOTCONNECT   = CONNECT_E_FIRST + 2,
105     CONNECT_E_OVERRIDDEN      = CONNECT_E_FIRST + 3,
106 
107     SELFREG_E_FIRST           = ITF_ERROR_SCODE_FOR_D!(0x200),
108     SELFREG_E_LAST            = ITF_ERROR_SCODE_FOR_D!(0x20F),
109     SELFREG_S_FIRST           = ITF_SUCCESS_SCODE_FOR_D!(0x200),
110     SELFREG_S_LAST            = ITF_SUCCESS_SCODE_FOR_D!(0x20F),
111     SELFREG_E_TYPELIB         = SELFREG_E_FIRST + 0,
112     SELFREG_E_CLASS           = SELFREG_E_FIRST + 1,
113 
114     PERPROP_E_FIRST           = ITF_ERROR_SCODE_FOR_D!(0x200),
115     PERPROP_E_LAST            = ITF_ERROR_SCODE_FOR_D!(0x20F),
116     PERPROP_S_FIRST           = ITF_SUCCESS_SCODE_FOR_D!(0x200),
117     PERPROP_S_LAST            = ITF_SUCCESS_SCODE_FOR_D!(0x20F),
118     PERPROP_E_NOPAGEAVAILABLE = PERPROP_E_FIRST
119 }
120 
121 enum {
122     OLEMISC_RECOMPOSEONRESIZE            = 0x1,
123     OLEMISC_ONLYICONIC                   = 0x2,
124     OLEMISC_INSERTNOTREPLACE             = 0x4,
125     OLEMISC_STATIC                       = 0x8,
126     OLEMISC_CANTLINKINSIDE               = 0x10,
127     OLEMISC_CANLINKBYOLE1                = 0x20,
128     OLEMISC_ISLINKOBJECT                 = 0x40,
129     OLEMISC_INSIDEOUT                    = 0x80,
130     OLEMISC_ACTIVATEWHENVISIBLE          = 0x100,
131     OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200,
132     OLEMISC_INVISIBLEATRUNTIME           = 0x400,
133     OLEMISC_ALWAYSRUN                    = 0x800,
134     OLEMISC_ACTSLIKEBUTTON               = 0x1000,
135     OLEMISC_ACTSLIKELABEL                = 0x2000,
136     OLEMISC_NOUIACTIVATE                 = 0x4000,
137     OLEMISC_ALIGNABLE                    = 0x8000,
138     OLEMISC_SIMPLEFRAME                  = 0x10000,
139     OLEMISC_SETCLIENTSITEFIRST           = 0x20000,
140     OLEMISC_IMEMODE                      = 0x40000,
141     OLEMISC_IGNOREACTIVATEWHENVISIBLE    = 0x80000,
142     OLEMISC_WANTSTOMENUMERGE             = 0x100000,
143     OLEMISC_SUPPORTSMULTILEVELUNDO       = 0x200000
144 }
145 enum OLEIVERB_PROPERTIES = -7;
146 
147 enum VT_STREAMED_PROPSET = 73;
148 enum VT_STORED_PROPSET = 74;
149 enum VT_BLOB_PROPSET = 75;
150 enum VT_VERBOSE_ENUM = 76;
151 enum VT_COLOR = VARENUM.VT_I4;
152 enum VT_XPOS_PIXELS = VARENUM.VT_I4;
153 enum VT_YPOS_PIXELS = VARENUM.VT_I4;
154 enum VT_XSIZE_PIXELS = VARENUM.VT_I4;
155 enum VT_YSIZE_PIXELS = VARENUM.VT_I4;
156 enum VT_XPOS_HIMETRIC = VARENUM.VT_I4;
157 enum VT_YPOS_HIMETRIC = VARENUM.VT_I4;
158 enum VT_XSIZE_HIMETRIC = VARENUM.VT_I4;
159 enum VT_YSIZE_HIMETRIC = VARENUM.VT_I4;
160 enum VT_TRISTATE = VARENUM.VT_I2;
161 enum VT_OPTEXCLUSIVE = VARENUM.VT_BOOL;
162 enum VT_FONT = VARENUM.VT_DISPATCH;
163 enum VT_PICTURE = VARENUM.VT_DISPATCH;
164 enum VT_HANDLE = VARENUM.VT_I4;
165 
166 enum {
167     OCM__BASE = WM_USER + 0x1c00,
168     OCM_COMMAND = OCM__BASE + WM_COMMAND,
169     OCM_CTLCOLORBTN = OCM__BASE + WM_CTLCOLORBTN,
170     OCM_CTLCOLOREDIT = OCM__BASE + WM_CTLCOLOREDIT,
171     OCM_CTLCOLORDLG = OCM__BASE + WM_CTLCOLORDLG,
172     OCM_CTLCOLORLISTBOX = OCM__BASE + WM_CTLCOLORLISTBOX,
173     OCM_CTLCOLORMSGBOX = OCM__BASE + WM_CTLCOLORMSGBOX,
174     OCM_CTLCOLORSCROLLBAR = OCM__BASE + WM_CTLCOLORSCROLLBAR,
175     OCM_CTLCOLORSTATIC = OCM__BASE + WM_CTLCOLORSTATIC,
176     OCM_DRAWITEM = OCM__BASE + WM_DRAWITEM,
177     OCM_MEASUREITEM = OCM__BASE + WM_MEASUREITEM,
178     OCM_DELETEITEM = OCM__BASE + WM_DELETEITEM,
179     OCM_VKEYTOITEM = OCM__BASE + WM_VKEYTOITEM,
180     OCM_CHARTOITEM = OCM__BASE + WM_CHARTOITEM,
181     OCM_COMPAREITEM = OCM__BASE + WM_COMPAREITEM,
182     OCM_HSCROLL = OCM__BASE + WM_HSCROLL,
183     OCM_VSCROLL = OCM__BASE + WM_VSCROLL,
184     OCM_PARENTNOTIFY = OCM__BASE + WM_PARENTNOTIFY,
185     OCM_NOTIFY = OCM__BASE + WM_NOTIFY
186 }
187 
188 enum {
189     CTRLINFO_EATS_RETURN = 1,
190     CTRLINFO_EATS_ESCAPE
191 }
192 
193 enum {
194     XFORMCOORDS_POSITION            = 1,
195     XFORMCOORDS_SIZE                = 2,
196     XFORMCOORDS_HIMETRICTOCONTAINER = 4,
197     XFORMCOORDS_CONTAINERTOHIMETRIC = 8
198 }
199 
200 enum GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1;
201 
202 enum {
203     PROPPAGESTATUS_DIRTY = 1,
204     PROPPAGESTATUS_VALIDATE = 2
205 }
206 
207 enum {
208     PICTURE_SCALABLE = 1,
209     PICTURE_TRANSPARENT = 2
210 }
211 
212 enum {
213     PICTYPE_UNINITIALIZED  =  -1,
214     PICTYPE_NONE,       // = 0
215     PICTYPE_BITMAP,
216     PICTYPE_METAFILE,
217     PICTYPE_ICON,
218     PICTYPE_ENHMETAFILE // = 4
219 }
220 
221 enum {
222     DISPID_AUTOSIZE = -500,
223     DISPID_BACKCOLOR = -501,
224     DISPID_BACKSTYLE = -502,
225     DISPID_BORDERCOLOR = -503,
226     DISPID_BORDERSTYLE = -504,
227     DISPID_BORDERWIDTH = -505,
228     DISPID_DRAWMODE = -507,
229     DISPID_DRAWSTYLE = -508,
230     DISPID_DRAWWIDTH = -509,
231     DISPID_FILLCOLOR = -510,
232     DISPID_FILLSTYLE = -511,
233     DISPID_FONT = -512,
234     DISPID_FORECOLOR = -513,
235     DISPID_ENABLED = -514,
236     DISPID_HWND = -515,
237     DISPID_TABSTOP = -516,
238     DISPID_TEXT = -517,
239     DISPID_CAPTION = -518,
240     DISPID_BORDERVISIBLE = -519,
241     DISPID_APPEARANCE = -520,
242     DISPID_MOUSEPOINTER = -521,
243     DISPID_MOUSEICON = -522,
244     DISPID_PICTURE = -523,
245     DISPID_VALID = -524,
246     DISPID_REFRESH = -550,
247     DISPID_DOCLICK = -551,
248     DISPID_ABOUTBOX = -552,
249     DISPID_CLICK = -600,
250     DISPID_DBLCLICK = -601,
251     DISPID_KEYDOWN = -602,
252     DISPID_KEYPRESS = -603,
253     DISPID_KEYUP = -604,
254     DISPID_MOUSEDOWN = -605,
255     DISPID_MOUSEMOVE = -606,
256     DISPID_MOUSEUP = -607,
257     DISPID_ERROREVENT = -608,
258     DISPID_AMBIENT_BACKCOLOR = -701,
259     DISPID_AMBIENT_DISPLAYNAME = -702,
260     DISPID_AMBIENT_FONT = -703,
261     DISPID_AMBIENT_FORECOLOR = -704,
262     DISPID_AMBIENT_LOCALEID = -705,
263     DISPID_AMBIENT_MESSAGEREFLECT = -706,
264     DISPID_AMBIENT_SCALEUNITS = -707,
265     DISPID_AMBIENT_TEXTALIGN = -708,
266     DISPID_AMBIENT_USERMODE = -709,
267     DISPID_AMBIENT_UIDEAD = -710,
268     DISPID_AMBIENT_SHOWGRABHANDLES = -711,
269     DISPID_AMBIENT_SHOWHATCHING = -712,
270     DISPID_AMBIENT_DISPLAYASDEFAULT = -713,
271     DISPID_AMBIENT_SUPPORTSMNEMONICS = -714,
272     DISPID_AMBIENT_AUTOCLIP = -715,
273     DISPID_AMBIENT_APPEARANCE = -716,
274     DISPID_AMBIENT_CODEPAGE = -725,
275     DISPID_AMBIENT_PALETTE = -726,
276     DISPID_AMBIENT_CHARSET = -727,
277     DISPID_AMBIENT_RIGHTTOLEFT = -732,
278     DISPID_AMBIENT_TOPTOBOTTOM = -733
279 }
280 
281 enum {
282     DISPID_FONT_NAME = 0,
283     DISPID_FONT_SIZE = 2,
284     DISPID_FONT_BOLD,
285     DISPID_FONT_ITALIC,
286     DISPID_FONT_UNDER,
287     DISPID_FONT_STRIKE,
288     DISPID_FONT_WEIGHT,
289     DISPID_FONT_CHARSET // = 8
290 }
291 
292 enum {
293     DISPID_PICT_HANDLE = 0,
294     DISPID_PICT_HPAL   = 2,
295     DISPID_PICT_TYPE,
296     DISPID_PICT_WIDTH,
297     DISPID_PICT_HEIGHT,
298     DISPID_PICT_RENDER // = 6
299 }
300 
301 alias LPOLECONTROL = IOleControl;
302 alias LPOLECONTROLSITE = IOleControlSite;
303 alias LPSIMPLEFRAMESITE = ISimpleFrameSite;
304 alias LPPERSISTPROPERTYBAG = IPersistPropertyBag;
305 alias LPPERSISTSTREAMINIT = IPersistStreamInit;
306 alias LPPERSISTMEMORY = IPersistMemory;
307 alias LPPROPERTYNOTIFYSINK = IPropertyNotifySink;
308 alias LPPROVIDECLASSINFO = IProvideClassInfo;
309 alias LPPROVIDECLASSINFO2 = IProvideClassInfo2;
310 alias LPCONNECTIONPOINTCONTAINER = IConnectionPointContainer;
311 alias LPCLASSFACTORY2 = IClassFactory2;
312 alias LPSPECIFYPROPERTYPAGES = ISpecifyPropertyPages;
313 alias LPPERPROPERTYBROWSING = IPerPropertyBrowsing;
314 alias LPPROPERTYPAGE = IPropertyPage;
315 alias LPPROPERTYPAGE2 = IPropertyPage2;
316 
317 alias LPPICTURE = IPicture;
318 alias LPPICTUREDISP = IPictureDisp;
319 alias OLE_XPOS_PIXELS = int;
320 alias OLE_YPOS_PIXELS = int;
321 alias OLE_XSIZE_PIXELS = int;
322 alias OLE_YSIZE_PIXELS = int;
323 alias OLE_XPOS_CONTAINER = float;
324 alias OLE_YPOS_CONTAINER = float;
325 alias OLE_XSIZE_CONTAINER = float;
326 
327 alias OLE_OPTEXCLUSIVE = VARIANT_BOOL;
328 alias OLE_CANCELBOOL = VARIANT_BOOL;
329 alias OLE_ENABLEDEFAULTBOOL = VARIANT_BOOL;
330 
331 align(8):
332 
333 enum OLE_TRISTATE {
334     triUnchecked,
335     triChecked1,
336     triGray
337 }
338 
339 struct OCPFIPARAMS {
340     ULONG cbStructSize;
341     HWND hWndOwner;
342     int x;
343     int y;
344     LPCOLESTR lpszCaption;
345     ULONG cObjects;
346     LPUNKNOWN *lplpUnk;
347     ULONG cPages;
348     CLSID *lpPages;
349     LCID lcid;
350     DISPID dispidInitialProperty;
351 }
352 alias LPOCPFIPARAMS = OCPFIPARAMS*;
353 
354 struct FONTDESC {
355     UINT cbSizeofstruct;
356     LPOLESTR lpstrName;
357     CY cySize;
358     SHORT sWeight;
359     SHORT sCharset;
360     BOOL fItalic;
361     BOOL fUnderline;
362     BOOL fStrikethrough;
363 }
364 alias LPFONTDESC = FONTDESC*;
365 
366 struct PICTDESC
367 {
368     UINT cbSizeofstruct;
369     UINT picType;
370     union {
371         struct _bmp {
372             HBITMAP hbitmap;
373             HPALETTE hpal;
374         }
375         _bmp bmp;
376         struct _wmf {
377             HMETAFILE hmeta;
378             int xExt;
379             int yExt;
380         }
381         _wmf wmf;
382         struct _icon {
383             HICON hicon;
384         }
385         _icon icon;
386         struct _emf {
387             HENHMETAFILE hemf;
388         }
389         _emf emf;
390     }
391 }
392 alias LPPICTDESC = PICTDESC*;
393 
394 extern(Windows) {
395     HRESULT DllRegisterServer();
396     HRESULT DllUnregisterServer();
397     HRESULT OleCreateFontIndirect(LPFONTDESC, REFIID, PVOID*);
398     HRESULT OleCreatePictureIndirect(LPPICTDESC, REFIID, BOOL, PVOID*);
399     HRESULT OleCreatePropertyFrame(HWND, UINT, UINT, LPCOLESTR, ULONG, LPUNKNOWN*, ULONG, LPCLSID, LCID, DWORD, PVOID);
400     HRESULT OleCreatePropertyFrameIndirect(LPOCPFIPARAMS);
401     HCURSOR OleIconToCursor(HINSTANCE, HICON);
402     HRESULT OleLoadPicture(LPSTREAM, LONG, BOOL, REFIID, PVOID*);
403     HRESULT OleLoadPictureEx(LPSTREAM, LONG, BOOL, REFIID, DWORD, DWORD, DWORD, LPVOID*);
404     HRESULT OleLoadPicturePath(LPOLESTR, LPUNKNOWN, DWORD, OLE_COLOR, REFIID, LPVOID*);
405     HRESULT OleLoadPictureFile(VARIANT, LPDISPATCH*);
406     HRESULT OleLoadPictureFileEx(VARIANT, DWORD, DWORD, DWORD, LPDISPATCH*);
407     HRESULT OleSavePictureFile(LPDISPATCH, BSTR);
408     HRESULT OleTranslateColor(OLE_COLOR, HPALETTE, COLORREF*);
409 }