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