1 // Copyright © 2015-2017 winapi-rs developers
2 // Licensed under the Apache License, Version 2.0
3 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
4 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
5 // All files in the project carrying such notice may not be copied, modified, or distributed
6 // except according to those terms.
7 use ctypes::{c_int, c_void};
8 use shared::guiddef::{REFGUID, REFIID};
9 use shared::minwindef::{BOOL, ULONG};
10 use shared::windef::HWND;
11 use um::objidl::IBindCtx;
12 use um::unknwnbase::{IUnknown, IUnknownVtbl};
13 use um::winnt::{HRESULT, LPWSTR};
14 DEFINE_GUID!{CLSID_TaskbarList,
15     0x56fdf344, 0xfd6d, 0x11d0, 0x95, 0x8a, 0x00, 0x60, 0x97, 0xc9, 0xa0, 0x90}
16 //4498
17 pub type SFGAOF = ULONG;
18 //9466
19 ENUM!{enum SIGDN {
20     SIGDN_NORMALDISPLAY = 0,
21     SIGDN_PARENTRELATIVEPARSING = 0x80018001,
22     SIGDN_DESKTOPABSOLUTEPARSING = 0x80028000,
23     SIGDN_PARENTRELATIVEEDITING = 0x80031001,
24     SIGDN_DESKTOPABSOLUTEEDITING = 0x8004c000,
25     SIGDN_FILESYSPATH = 0x80058000,
26     SIGDN_URL = 0x80068000,
27     SIGDN_PARENTRELATIVEFORADDRESSBAR = 0x8007c001,
28     SIGDN_PARENTRELATIVE = 0x80080001,
29     SIGDN_PARENTRELATIVEFORUI = 0x80094001,
30 }}
31 ENUM!{enum SICHINTF {
32     SICHINT_DISPLAY = 0,
33     SICHINT_ALLFIELDS = 0x80000000,
34     SICHINT_CANONICAL = 0x10000000,
35     SICHINT_TEST_FILESYSPATH_IF_NOT_EQUAL = 0x20000000,
36 }}
37 RIDL!{#[uuid(0x43826d1e, 0xe718, 0x42ee, 0xbc, 0x55, 0xa1, 0xe2, 0x61, 0xc3, 0x7b, 0xfe)]
38 interface IShellItem(IShellItemVtbl): IUnknown(IUnknownVtbl) {
39     fn BindToHandler(
40         pbc: *mut IBindCtx,
41         bhid: REFGUID,
42         riid: REFIID,
43         ppv: *mut *mut c_void,
44     ) -> HRESULT,
45     fn GetParent(
46         ppsi: *mut *mut IShellItem,
47     ) -> HRESULT,
48     fn GetDisplayName(
49         sigdnName: SIGDN,
50         ppszName: *mut LPWSTR,
51     ) -> HRESULT,
52     fn GetAttributes(
53         sfgaoMask: SFGAOF,
54         psfgaoAttribs: *mut SFGAOF,
55     ) -> HRESULT,
56     fn Compare(
57         psi: *mut IShellItem,
58         hint: SICHINTF,
59         piOrder: *mut c_int,
60     ) -> HRESULT,
61 }}
62 //20869
63 RIDL!{#[uuid(0xb4db1657, 0x70d7, 0x485e, 0x8e, 0x3e, 0x6f, 0xcb, 0x5a, 0x5c, 0x18, 0x02)]
64 interface IModalWindow(IModalWindowVtbl): IUnknown(IUnknownVtbl) {
65     fn Show(
66         hwndOwner: HWND,
67     ) -> HRESULT,
68 }}
69 //22307
70 //27457
71 pub type IShellItemFilter = IUnknown; // TODO
72 RIDL!{#[uuid(0x56fdf342, 0xfd6d, 0x11d0, 0x95, 0x8a, 0x00, 0x60, 0x97, 0xc9, 0xa0, 0x90)]
73 interface ITaskbarList(ITaskbarListVtbl): IUnknown(IUnknownVtbl) {
74     fn HrInit() -> HRESULT,
75     fn AddTab(
76         hwnd: HWND,
77     ) -> HRESULT,
78     fn DeleteTab(
79         hwnd: HWND,
80     ) -> HRESULT,
81     fn ActivateTab(
82         hwnd: HWND,
83     ) -> HRESULT,
84     fn SetActiveAlt(
85         hwnd: HWND,
86     ) -> HRESULT,
87 }}
88 RIDL!{#[uuid(0x602d4995, 0xb13a, 0x429b, 0xa6, 0x6e, 0x19, 0x35, 0xe4, 0x4f, 0x43, 0x17)]
89 interface ITaskbarList2(ITaskbarList2Vtbl): ITaskbarList(ITaskbarListVtbl) {
90     fn MarkFullscreenWindow(
91         hwnd: HWND,
92         fFullscreen: BOOL,
93     ) -> HRESULT,
94 }}
95