Skip to main content

winit/platform_impl/windows/
definitions.rs

1#![allow(non_snake_case)]
2#![allow(non_upper_case_globals)]
3
4use std::ffi::c_void;
5
6use windows_sys::core::{IUnknown, GUID, HRESULT};
7use windows_sys::Win32::Foundation::{BOOL, HWND, POINTL};
8use windows_sys::Win32::System::Com::{
9    IAdviseSink, IDataObject, IEnumFORMATETC, IEnumSTATDATA, FORMATETC, STGMEDIUM,
10};
11
12#[repr(C)]
13pub struct IUnknownVtbl {
14    pub QueryInterface: unsafe extern "system" fn(
15        This: *mut IUnknown,
16        riid: *const GUID,
17        ppvObject: *mut *mut c_void,
18    ) -> HRESULT,
19    pub AddRef: unsafe extern "system" fn(This: *mut IUnknown) -> u32,
20    pub Release: unsafe extern "system" fn(This: *mut IUnknown) -> u32,
21}
22
23#[repr(C)]
24pub struct IDataObjectVtbl {
25    pub parent: IUnknownVtbl,
26    pub GetData: unsafe extern "system" fn(
27        This: *mut IDataObject,
28        pformatetcIn: *const FORMATETC,
29        pmedium: *mut STGMEDIUM,
30    ) -> HRESULT,
31    pub GetDataHere: unsafe extern "system" fn(
32        This: *mut IDataObject,
33        pformatetc: *const FORMATETC,
34        pmedium: *mut STGMEDIUM,
35    ) -> HRESULT,
36    QueryGetData:
37        unsafe extern "system" fn(This: *mut IDataObject, pformatetc: *const FORMATETC) -> HRESULT,
38    pub GetCanonicalFormatEtc: unsafe extern "system" fn(
39        This: *mut IDataObject,
40        pformatetcIn: *const FORMATETC,
41        pformatetcOut: *mut FORMATETC,
42    ) -> HRESULT,
43    pub SetData: unsafe extern "system" fn(
44        This: *mut IDataObject,
45        pformatetc: *const FORMATETC,
46        pformatetcOut: *const FORMATETC,
47        fRelease: BOOL,
48    ) -> HRESULT,
49    pub EnumFormatEtc: unsafe extern "system" fn(
50        This: *mut IDataObject,
51        dwDirection: u32,
52        ppenumFormatEtc: *mut *mut IEnumFORMATETC,
53    ) -> HRESULT,
54    pub DAdvise: unsafe extern "system" fn(
55        This: *mut IDataObject,
56        pformatetc: *const FORMATETC,
57        advf: u32,
58        pAdvSInk: *const IAdviseSink,
59        pdwConnection: *mut u32,
60    ) -> HRESULT,
61    pub DUnadvise: unsafe extern "system" fn(This: *mut IDataObject, dwConnection: u32) -> HRESULT,
62    pub EnumDAdvise: unsafe extern "system" fn(
63        This: *mut IDataObject,
64        ppenumAdvise: *const *const IEnumSTATDATA,
65    ) -> HRESULT,
66}
67
68#[repr(C)]
69pub struct IDropTargetVtbl {
70    pub parent: IUnknownVtbl,
71    pub DragEnter: unsafe extern "system" fn(
72        This: *mut IDropTarget,
73        pDataObj: *const IDataObject,
74        grfKeyState: u32,
75        pt: *const POINTL,
76        pdwEffect: *mut u32,
77    ) -> HRESULT,
78    pub DragOver: unsafe extern "system" fn(
79        This: *mut IDropTarget,
80        grfKeyState: u32,
81        pt: *const POINTL,
82        pdwEffect: *mut u32,
83    ) -> HRESULT,
84    pub DragLeave: unsafe extern "system" fn(This: *mut IDropTarget) -> HRESULT,
85    pub Drop: unsafe extern "system" fn(
86        This: *mut IDropTarget,
87        pDataObj: *const IDataObject,
88        grfKeyState: u32,
89        pt: *const POINTL,
90        pdwEffect: *mut u32,
91    ) -> HRESULT,
92}
93
94#[repr(C)]
95pub struct IDropTarget {
96    pub lpVtbl: *const IDropTargetVtbl,
97}
98
99#[repr(C)]
100pub struct ITaskbarListVtbl {
101    pub parent: IUnknownVtbl,
102    pub HrInit: unsafe extern "system" fn(This: *mut ITaskbarList) -> HRESULT,
103    pub AddTab: unsafe extern "system" fn(This: *mut ITaskbarList, hwnd: HWND) -> HRESULT,
104    pub DeleteTab: unsafe extern "system" fn(This: *mut ITaskbarList, hwnd: HWND) -> HRESULT,
105    pub ActivateTab: unsafe extern "system" fn(This: *mut ITaskbarList, hwnd: HWND) -> HRESULT,
106    pub SetActiveAlt: unsafe extern "system" fn(This: *mut ITaskbarList, hwnd: HWND) -> HRESULT,
107}
108
109#[repr(C)]
110pub struct ITaskbarList {
111    pub lpVtbl: *const ITaskbarListVtbl,
112}
113
114#[repr(C)]
115pub struct ITaskbarList2Vtbl {
116    pub parent: ITaskbarListVtbl,
117    pub MarkFullscreenWindow: unsafe extern "system" fn(
118        This: *mut ITaskbarList2,
119        hwnd: HWND,
120        fFullscreen: BOOL,
121    ) -> HRESULT,
122}
123
124#[repr(C)]
125pub struct ITaskbarList2 {
126    pub lpVtbl: *const ITaskbarList2Vtbl,
127}
128
129pub const CLSID_TaskbarList: GUID = GUID {
130    data1: 0x56fdf344,
131    data2: 0xfd6d,
132    data3: 0x11d0,
133    data4: [0x95, 0x8a, 0x00, 0x60, 0x97, 0xc9, 0xa0, 0x90],
134};
135
136pub const IID_ITaskbarList: GUID = GUID {
137    data1: 0x56fdf342,
138    data2: 0xfd6d,
139    data3: 0x11d0,
140    data4: [0x95, 0x8a, 0x00, 0x60, 0x97, 0xc9, 0xa0, 0x90],
141};
142
143pub const IID_ITaskbarList2: GUID = GUID {
144    data1: 0x602d4995,
145    data2: 0xb13a,
146    data3: 0x429b,
147    data4: [0xa6, 0x6e, 0x19, 0x35, 0xe4, 0x4f, 0x43, 0x17],
148};