winapi_ui_automation/um/
commoncontrols.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6use ctypes::{c_int, c_void};
7use shared::guiddef::{REFCLSID, REFIID};
8use shared::minwindef::{BOOL, DWORD, LRESULT, UINT};
9use shared::windef::{COLORREF, HBITMAP, HICON, HWND, POINT, RECT};
10use um::commctrl::{IMAGEINFO, IMAGELISTDRAWPARAMS};
11use um::unknwnbase::{IUnknown, IUnknownVtbl};
12use um::winnt::HRESULT;
13extern "system" {
14    pub fn ImageList_CoCreateInstance(
15        rclsid: REFCLSID,
16        punkOuter: *const IUnknown,
17        riid: REFIID,
18        ppv: *mut *mut c_void,
19    ) -> HRESULT;
20}
21pub const ILIF_ALPHA: DWORD = 0x00000001;
22pub const ILIF_LOWQUALITY: DWORD = 0x00000001;
23pub const ILDRF_IMAGELOWQUALITY: LRESULT = 0x00000001;
24pub const ILDRF_OVERLAYLOWQUALITY: LRESULT = 0x00000010;
25RIDL!{#[uuid(0x46eb5926, 0x582e, 0x4017, 0x9f, 0xdf, 0xe8, 0x99, 0x8d, 0xaa, 0x09, 0x50)]
26interface IImageList(IImageListVtbl): IUnknown(IUnknownVtbl) {
27    fn Add(
28        hbmImage: HBITMAP,
29        hbmMask: HBITMAP,
30        pi: *mut c_int,
31    ) -> HRESULT,
32    fn ReplaceIcon(
33        hicon: HICON,
34        pi: *mut c_int,
35    ) -> HRESULT,
36    fn SetOverlayImage(
37        iImage: c_int,
38        iOverlay: c_int,
39    ) -> HRESULT,
40    fn Replace(
41        hbmImage: HBITMAP,
42        hbmMask: HBITMAP,
43    ) -> HRESULT,
44    fn AddMasked(
45        hbmImage: HBITMAP,
46        crMask: COLORREF,
47        pi: *mut c_int,
48    ) -> HRESULT,
49    fn Draw(
50        pimldp: *mut IMAGELISTDRAWPARAMS,
51    ) -> HRESULT,
52    fn Remove(
53        i: c_int,
54    ) -> HRESULT,
55    fn GetIcon(
56        i: c_int,
57        flags: UINT,
58        picon: *mut HICON,
59    ) -> HRESULT,
60    fn GetImageInfo(
61        i: c_int,
62        pImageInfo: *mut IMAGEINFO,
63    ) -> HRESULT,
64    fn Copy(
65        iDst: c_int,
66        punkSrc: *mut IUnknown,
67        iSrc: c_int,
68        uFlags: UINT,
69    ) -> HRESULT,
70    fn Merge(
71        i1: c_int,
72        punk2: *mut IUnknown,
73        i2: c_int,
74        dx: c_int,
75        dy: c_int,
76        riid: REFIID,
77        ppv: *mut *mut c_void,
78    ) -> HRESULT,
79    fn Clone(
80        riid: REFIID,
81        ppv: *mut *mut c_void,
82    ) -> HRESULT,
83    fn GetImageRect(
84        i: c_int,
85        prc: *mut RECT,
86    ) -> HRESULT,
87    fn GetIconSize(
88        cx: *mut c_int,
89        cy: *mut c_int,
90    ) -> HRESULT,
91    fn SetIconSize(
92        cx: c_int,
93        cy: c_int,
94    ) -> HRESULT,
95    fn GetImageCount(
96        pi: *mut c_int,
97    ) -> HRESULT,
98    fn SetImageCount(
99        uNewCount: UINT,
100    ) -> HRESULT,
101    fn SetBkColor(
102        clrBk: COLORREF,
103        pclr: *mut COLORREF,
104    ) -> HRESULT,
105    fn GetBkColor(
106        pclr: *mut COLORREF,
107    ) -> HRESULT,
108    fn BeginDrag(
109        iTrack: c_int,
110        dxHotspot: c_int,
111        dyHotspot: c_int,
112    ) -> HRESULT,
113    fn EndDrag() -> HRESULT,
114    fn DragEnter(
115        hwndLock: HWND,
116        x: c_int,
117        y: c_int,
118    ) -> HRESULT,
119    fn DragLeave(
120        hwndLock: HWND,
121    ) -> HRESULT,
122    fn DragMove(
123        x: c_int,
124        y: c_int,
125    ) -> HRESULT,
126    fn SetDragCursorImage(
127        punk: *mut IUnknown,
128        iDrag: c_int,
129        dxHotspot: c_int,
130        dyHotspot: c_int,
131    ) -> HRESULT,
132    fn DragShowNolock(
133        fShow: BOOL,
134    ) -> HRESULT,
135    fn GetDragImage(
136        ppt: *mut POINT,
137        pptHotspot: *mut POINT,
138        riid: REFIID,
139        ppv: *mut *mut c_void,
140    ) -> HRESULT,
141    fn GetItemFlags(
142        dwFlags: *mut DWORD,
143    ) -> HRESULT,
144    fn GetOverlayImage(
145        iOverlay: c_int,
146        piIndex: *mut c_int,
147    ) -> HRESULT,
148}}
149pub const ILR_DEFAULT: DWORD = 0x0000;
150pub const ILR_HORIZONTAL_LEFT: DWORD = 0x0000;
151pub const ILR_HORIZONTAL_CENTER: DWORD = 0x0001;
152pub const ILR_HORIZONTAL_RIGHT: DWORD = 0x0002;
153pub const ILR_VERTICAL_TOP: DWORD = 0x0000;
154pub const ILR_VERTICAL_CENTER: DWORD = 0x0010;
155pub const ILR_VERTICAL_BOTTOM: DWORD = 0x0020;
156pub const ILR_SCALE_CLIP: DWORD = 0x0000;
157pub const ILR_SCALE_ASPECTRATIO: DWORD = 0x0100;
158pub const ILGOS_ALWAYS: DWORD = 0x00000000;
159pub const ILGOS_FROMSTANDBY: DWORD = 0x00000001;
160pub const ILFIP_ALWAYS: DWORD = 0x00000000;
161pub const ILFIP_FROMSTANDBY: DWORD = 0x00000001;
162pub const ILDI_PURGE: DWORD = 0x00000001;
163pub const ILDI_STANDBY: DWORD = 0x00000002;
164pub const ILDI_RESETACCESS: DWORD = 0x00000004;
165pub const ILDI_QUERYACCESS: DWORD = 0x00000008;
166STRUCT!{struct IMAGELISTSTATS {
167    cbSize: DWORD,
168    cAlloc: c_int,
169    cUsed: c_int,
170    cStandby: c_int,
171}}
172RIDL!{#[uuid(0x192b9d83, 0x58fc, 0x457b, 0x90, 0xa0, 0x2b, 0x82, 0xa8, 0xb5, 0xda, 0xe1)]
173interface IImageList2(IImageList2Vtbl): IImageList(IImageListVtbl) {
174    fn Resize(
175        cxNewIconSize: c_int,
176        cyNewIconSize: c_int,
177    ) -> HRESULT,
178    fn GetOriginalSize(
179        iImage: c_int,
180        dwFlags: DWORD,
181        pcx: *mut c_int,
182        pcy: *mut c_int,
183    ) -> HRESULT,
184    fn SetOriginalSize(
185        iImage: c_int,
186        cx: c_int,
187        cy: c_int,
188    ) -> HRESULT,
189    fn SetCallback(
190        punk: *mut IUnknown,
191    ) -> HRESULT,
192    fn GetCallback(
193        riid: REFIID,
194        ppv: *mut *mut c_void,
195    ) -> HRESULT,
196    fn ForceImagePresent(
197        iImage: c_int,
198        dwFlags: DWORD,
199    ) -> HRESULT,
200    fn DiscardImages(
201        iFirstImage: c_int,
202        iLastImage: c_int,
203        dwFlags: DWORD,
204    ) -> HRESULT,
205    fn PreloadImages(
206        pimldp: *mut IMAGELISTDRAWPARAMS,
207    ) -> HRESULT,
208    fn GetStatistics(
209        pils: *mut IMAGELISTSTATS,
210    ) -> HRESULT,
211    fn Initialize(
212        cx: c_int,
213        cy: c_int,
214        flags: UINT,
215        cInitial: c_int,
216        cGrow: c_int,
217    ) -> HRESULT,
218    fn Replace2(
219        i: c_int,
220        hbmImage: HBITMAP,
221        hbmMask: HBITMAP,
222        punk: *mut IUnknown,
223        dwFlags: DWORD,
224    ) -> HRESULT,
225    fn ReplaceFromImageList(
226        i: c_int,
227        pil: *mut IImageList,
228        iSrc: c_int,
229        punk: *mut IUnknown,
230        dwFlags: DWORD,
231    ) -> HRESULT,
232}}