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/_oleidl.d)
8  */
9 module nulib.system.win32.oleidl;
10 import nulib.system.com;
11 import nulib.system.win32.basetyps;
12 import nulib.system.win32.objidl;
13 import nulib.system.win32.windef;
14 import nulib.system.win32.winuser;
15 import nulib.system.win32.wtypes;
16 import nulib.system.win32.wingdi; // for LPLOGPALETTE
17 import nulib.system.com;
18 
19 enum MK_ALT = 32;
20 
21 enum BINDSPEED {
22     BINDSPEED_INDEFINITE = 1,
23     BINDSPEED_MODERATE,
24     BINDSPEED_IMMEDIATE
25 }
26 
27 enum OLEWHICHMK {
28     OLEWHICHMK_CONTAINER = 1,
29     OLEWHICHMK_OBJREL,
30     OLEWHICHMK_OBJFULL
31 }
32 
33 enum OLEGETMONIKER {
34     OLEGETMONIKER_ONLYIFTHERE = 1,
35     OLEGETMONIKER_FORCEASSIGN,
36     OLEGETMONIKER_UNASSIGN,
37     OLEGETMONIKER_TEMPFORUSER
38 }
39 
40 enum USERCLASSTYPE {
41     USERCLASSTYPE_FULL = 1,
42     USERCLASSTYPE_SHORT,
43     USERCLASSTYPE_APPNAME
44 }
45 
46 enum DROPEFFECT {
47     DROPEFFECT_NONE   = 0,
48     DROPEFFECT_COPY   = 1,
49     DROPEFFECT_MOVE   = 2,
50     DROPEFFECT_LINK   = 4,
51     DROPEFFECT_SCROLL = 0x80000000
52 }
53 
54 struct OLEMENUGROUPWIDTHS {
55     LONG[6] width;
56 }
57 alias LPOLEMENUGROUPWIDTHS = OLEMENUGROUPWIDTHS*;
58 
59 alias HOLEMENU = HGLOBAL;
60 
61 enum OLECLOSE {
62     OLECLOSE_SAVEIFDIRTY,
63     OLECLOSE_NOSAVE,
64     OLECLOSE_PROMPTSAVE
65 }
66 
67 struct OLEVERB {
68     LONG lVerb;
69     LPWSTR lpszVerbName;
70     DWORD fuFlags;
71     DWORD grfAttribs;
72 }
73 alias LPOLEVERB = OLEVERB*;
74 
75 alias BORDERWIDTHS = RECT;
76 alias LPBORDERWIDTHS = LPRECT;
77 alias LPCBORDERWIDTHS = LPCRECT;
78 
79 alias LPOLEINPLACEFRAMEINFO = OLEINPLACEFRAMEINFO*;
80 struct OLEINPLACEFRAMEINFO {
81     UINT cb;
82     BOOL fMDIApp;
83     HWND hwndFrame;
84     HACCEL haccel;
85     UINT cAccelEntries;
86 }
87 
88 alias LPENUMOLEVERB = IEnumOLEVERB;
89 interface IEnumOLEVERB : IUnknown
90 {
91       HRESULT Next(ULONG,OLEVERB*,ULONG*);
92       HRESULT Skip(ULONG);
93       HRESULT Reset();
94       HRESULT Clone(IEnumOLEVERB*);
95 }
96 
97 
98 alias LPPARSEDISPLAYNAME = IParseDisplayName;
99 interface IParseDisplayName : IUnknown {
100     HRESULT ParseDisplayName(IBindCtx,LPOLESTR,ULONG*,IMoniker*);
101 }
102 
103 alias LPOLECONTAINER = IOleContainer;
104 interface IOleContainer : IParseDisplayName {
105     HRESULT EnumObjects(DWORD,IEnumUnknown*);
106     HRESULT LockContainer(BOOL);
107 }
108 
109 interface IOleItemContainer : IOleContainer {
110     HRESULT GetObject(LPOLESTR,DWORD,IBindCtx,REFIID,void**);
111     HRESULT GetObjectStorage(LPOLESTR,IBindCtx,REFIID,void**);
112     HRESULT IsRunning(LPOLESTR);
113 }
114 
115 alias LPOLECLIENTSITE = IOleClientSite;
116 interface IOleClientSite : IUnknown {
117     HRESULT SaveObject();
118     HRESULT GetMoniker(DWORD,DWORD,LPMONIKER*);
119     HRESULT GetContainer(LPOLECONTAINER*);
120     HRESULT ShowObject();
121     HRESULT OnShowWindow(BOOL);
122     HRESULT RequestNewObjectLayout();
123 }
124 
125 alias LPOLEOBJECT = IOleObject;
126 interface IOleObject : IUnknown {
127     HRESULT SetClientSite(LPOLECLIENTSITE);
128     HRESULT GetClientSite(LPOLECLIENTSITE*);
129     HRESULT SetHostNames(LPCOLESTR,LPCOLESTR);
130     HRESULT Close(DWORD);
131     HRESULT SetMoniker(DWORD,LPMONIKER);
132     HRESULT GetMoniker(DWORD,DWORD,LPMONIKER*);
133     HRESULT InitFromData(LPDATAOBJECT,BOOL,DWORD);
134     HRESULT GetClipboardData(DWORD,LPDATAOBJECT*);
135     HRESULT DoVerb(LONG,LPMSG,LPOLECLIENTSITE,LONG,HWND,LPCRECT);
136     HRESULT EnumVerbs(LPENUMOLEVERB*);
137     HRESULT Update();
138     HRESULT IsUpToDate();
139     HRESULT GetUserClassID(LPCLSID);
140     HRESULT GetUserType(DWORD,LPOLESTR*);
141     HRESULT SetExtent(DWORD,SIZEL*);
142     HRESULT GetExtent(DWORD,SIZEL*);
143     HRESULT Advise(LPADVISESINK,PDWORD);
144     HRESULT Unadvise(DWORD);
145     HRESULT EnumAdvise(LPENUMSTATDATA*);
146     HRESULT GetMiscStatus(DWORD,PDWORD);
147     HRESULT SetColorScheme(LPLOGPALETTE);
148 }
149 
150 alias LPOLEWINDOW = IOleWindow;
151 interface IOleWindow : IUnknown {
152     HRESULT GetWindow(HWND*);
153     HRESULT ContextSensitiveHelp(BOOL);
154 }
155 
156 alias LPOLEINPLACEUIWINDOW = IOleInPlaceUIWindow;
157 interface IOleInPlaceUIWindow : IOleWindow {
158     HRESULT GetBorder(LPRECT);
159     HRESULT RequestBorderSpace(LPCBORDERWIDTHS);
160     HRESULT SetBorderSpace(LPCBORDERWIDTHS);
161     HRESULT SetActiveObject(LPOLEINPLACEACTIVEOBJECT,LPCOLESTR);
162 }
163 
164 alias LPOLEINPLACEOBJECT = IOleInPlaceObject;
165 interface IOleInPlaceObject : IOleWindow {
166     HRESULT InPlaceDeactivate();
167     HRESULT UIDeactivate();
168     HRESULT SetObjectRects(LPCRECT,LPCRECT);
169     HRESULT ReactivateAndUndo();
170 }
171 
172 alias LPOLEINPLACEACTIVEOBJECT = IOleInPlaceActiveObject;
173 interface IOleInPlaceActiveObject : IOleWindow {
174     HRESULT TranslateAccelerator(LPMSG);
175     HRESULT OnFrameWindowActivate(BOOL);
176     HRESULT OnDocWindowActivate(BOOL);
177     HRESULT ResizeBorder(LPCRECT,LPOLEINPLACEUIWINDOW,BOOL);
178     HRESULT EnableModeless(BOOL);
179 }
180 
181 alias LPOLEINPLACEFRAME = IOleInPlaceFrame;
182 interface IOleInPlaceFrame : IOleInPlaceUIWindow {
183     HRESULT InsertMenus(HMENU,LPOLEMENUGROUPWIDTHS);
184     HRESULT SetMenu(HMENU,HOLEMENU,HWND);
185     HRESULT RemoveMenus(HMENU);
186     HRESULT SetStatusText(LPCOLESTR);
187     HRESULT EnableModeless(BOOL);
188     HRESULT TranslateAccelerator(LPMSG,WORD);
189 }
190 
191 alias LPOLEINPLACESITE = IOleInPlaceSite;
192 interface IOleInPlaceSite : IOleWindow {
193     HRESULT CanInPlaceActivate();
194     HRESULT OnInPlaceActivate();
195     HRESULT OnUIActivate();
196     HRESULT GetWindowContext(IOleInPlaceFrame,IOleInPlaceUIWindow,LPRECT,LPRECT,LPOLEINPLACEFRAMEINFO);
197     HRESULT Scroll(SIZE);
198     HRESULT OnUIDeactivate(BOOL);
199     HRESULT OnInPlaceDeactivate();
200     HRESULT DiscardUndoState();
201     HRESULT DeactivateAndUndo();
202     HRESULT OnPosRectChange(LPCRECT);
203 }
204 
205 alias LPOLEADVISEHOLDER = IOleAdviseHolder;
206 interface IOleAdviseHolder : IUnknown {
207     HRESULT Advise(LPADVISESINK,PDWORD);
208     HRESULT Unadvise(DWORD);
209     HRESULT EnumAdvise(LPENUMSTATDATA*);
210     HRESULT SendOnRename(LPMONIKER);
211     HRESULT SendOnSave();
212     HRESULT SendOnClose();
213 }
214 
215 alias LPDROPSOURCE = IDropSource;
216 interface IDropSource : IUnknown {
217     HRESULT QueryContinueDrag(BOOL,DWORD);
218     HRESULT GiveFeedback(DWORD);
219 }
220 
221 alias LPDROPTARGET = IDropTarget;
222 interface IDropTarget : IUnknown {
223     HRESULT DragEnter(LPDATAOBJECT,DWORD,POINTL,PDWORD);
224     HRESULT DragOver(DWORD,POINTL,PDWORD);
225     HRESULT DragLeave();
226     HRESULT Drop(LPDATAOBJECT,DWORD,POINTL,PDWORD);
227 }
228 
229 extern (Windows) {
230     alias __IView_pfncont = BOOL function(ULONG_PTR) ;
231 }
232 
233 alias LPVIEWOBJECT = IViewObject;
234 interface IViewObject : IUnknown {
235     HRESULT Draw(DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,HDC,LPCRECTL,LPCRECTL,__IView_pfncont pfnContinue,ULONG_PTR);
236     HRESULT GetColorSet(DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,LPLOGPALETTE*);
237     HRESULT Freeze(DWORD,LONG,PVOID,PDWORD);
238     HRESULT Unfreeze(DWORD);
239     HRESULT SetAdvise(DWORD,DWORD,IAdviseSink);
240     HRESULT GetAdvise(PDWORD,PDWORD,IAdviseSink*);
241 }
242 
243 alias LPVIEWOBJECT2 = IViewObject2;
244 interface IViewObject2 : IViewObject {
245     HRESULT GetExtent(DWORD,LONG,DVTARGETDEVICE*,LPSIZEL);
246 }
247 
248 alias LPOLECACHE = IOleCache;
249 interface IOleCache : IUnknown {
250     HRESULT Cache(FORMATETC*,DWORD,DWORD*);
251     HRESULT Uncache(DWORD);
252     HRESULT EnumCache(IEnumSTATDATA*);
253     HRESULT InitCache(LPDATAOBJECT);
254     HRESULT SetData(FORMATETC*,STGMEDIUM*,BOOL);
255 }
256 
257 alias LPOLECACHE2 = IOleCache2;
258 interface IOleCache2 : IOleCache {
259     HRESULT UpdateCache(LPDATAOBJECT,DWORD,LPVOID);
260     HRESULT DiscardCache(DWORD);
261 }
262 
263 alias LPOLECACHECONTROL = IOleCacheControl;
264 interface IOleCacheControl : IUnknown {
265     HRESULT OnRun(LPDATAOBJECT);
266     HRESULT OnStop();
267 }