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