1 // Copyright © 2016-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 //! Basic Windows Type Definitions
8 use ctypes::c_void;
9 use shared::minwindef::{DWORD, HFILE, WORD};
10 use um::winnt::{LONG, SHORT};
11 DECLARE_HANDLE!{HWND, HWND__}
12 DECLARE_HANDLE!{HHOOK, HHOOK__}
13 pub type HGDIOBJ = *mut c_void;
14 DECLARE_HANDLE!{HACCEL, HACCEL__}
15 DECLARE_HANDLE!{HBITMAP, HBITMAP__}
16 DECLARE_HANDLE!{HBRUSH, HBRUSH__}
17 DECLARE_HANDLE!{HCOLORSPACE, HCOLORSPACE__}
18 DECLARE_HANDLE!{HDC, HDC__}
19 DECLARE_HANDLE!{HGLRC, HGLRC__}
20 DECLARE_HANDLE!{HDESK, HDESK__}
21 DECLARE_HANDLE!{HENHMETAFILE, HENHMETAFILE__}
22 DECLARE_HANDLE!{HFONT, HFONT__}
23 DECLARE_HANDLE!{HICON, HICON__}
24 DECLARE_HANDLE!{HMENU, HMENU__}
25 DECLARE_HANDLE!{HPALETTE, HPALETTE__}
26 DECLARE_HANDLE!{HPEN, HPEN__}
27 DECLARE_HANDLE!{HWINEVENTHOOK, HWINEVENTHOOK__}
28 DECLARE_HANDLE!{HMONITOR, HMONITOR__}
29 DECLARE_HANDLE!{HUMPD, HUMPD__}
30 pub type HCURSOR = HICON;
31 pub type COLORREF = DWORD;
32 pub type LPCOLORREF = *mut DWORD;
33 pub const HFILE_ERROR: HFILE = -1;
34 STRUCT!{#[debug] struct RECT {
35     left: LONG,
36     top: LONG,
37     right: LONG,
38     bottom: LONG,
39 }}
40 pub type PRECT = *mut RECT;
41 pub type NPRECT = *mut RECT;
42 pub type LPRECT = *mut RECT;
43 pub type LPCRECT = *const RECT;
44 STRUCT!{#[debug] struct RECTL {
45     left: LONG,
46     top: LONG,
47     right: LONG,
48     bottom: LONG,
49 }}
50 pub type PRECTL = *mut RECTL;
51 pub type LPRECTL = *mut RECTL;
52 pub type LPCRECTL = *const RECTL;
53 STRUCT!{struct POINT {
54     x: LONG,
55     y: LONG,
56 }}
57 pub type PPOINT = *mut POINT;
58 pub type NPPOINT = *mut POINT;
59 pub type LPPOINT = *mut POINT;
60 STRUCT!{struct POINTL {
61     x: LONG,
62     y: LONG,
63 }}
64 pub type PPOINTL = *mut POINTL;
65 STRUCT!{struct SIZE {
66     cx: LONG,
67     cy: LONG,
68 }}
69 pub type PSIZE = *mut SIZE;
70 pub type LPSIZE = *mut SIZE;
71 pub type SIZEL = SIZE;
72 pub type PSIZEL = *mut SIZE;
73 pub type LPSIZEL = *mut SIZE;
74 STRUCT!{struct POINTS {
75     x: SHORT,
76     y: SHORT,
77 }}
78 pub type PPOINTS = *mut POINTS;
79 pub type LPPOINTS = *mut POINTS;
80 pub const DM_UPDATE: WORD = 1;
81 pub const DM_COPY: WORD = 2;
82 pub const DM_PROMPT: WORD = 4;
83 pub const DM_MODIFY: WORD = 8;
84 pub const DM_IN_BUFFER: WORD = DM_MODIFY;
85 pub const DM_IN_PROMPT: WORD = DM_PROMPT;
86 pub const DM_OUT_BUFFER: WORD = DM_COPY;
87 pub const DM_OUT_DEFAULT: WORD = DM_UPDATE;
88 pub const DC_FIELDS: DWORD = 1;
89 pub const DC_PAPERS: DWORD = 2;
90 pub const DC_PAPERSIZE: DWORD = 3;
91 pub const DC_MINEXTENT: DWORD = 4;
92 pub const DC_MAXEXTENT: DWORD = 5;
93 pub const DC_BINS: DWORD = 6;
94 pub const DC_DUPLEX: DWORD = 7;
95 pub const DC_SIZE: DWORD = 8;
96 pub const DC_EXTRA: DWORD = 9;
97 pub const DC_VERSION: DWORD = 10;
98 pub const DC_DRIVER: DWORD = 11;
99 pub const DC_BINNAMES: DWORD = 12;
100 pub const DC_ENUMRESOLUTIONS: DWORD = 13;
101 pub const DC_FILEDEPENDENCIES: DWORD = 14;
102 pub const DC_TRUETYPE: DWORD = 15;
103 pub const DC_PAPERNAMES: DWORD = 16;
104 pub const DC_ORIENTATION: DWORD = 17;
105 pub const DC_COPIES: DWORD = 18;
106 DECLARE_HANDLE!{DPI_AWARENESS_CONTEXT, DPI_AWARENESS_CONTEXT__}
107 ENUM!{enum DPI_AWARENESS {
108     DPI_AWARENESS_INVALID = -1i32 as u32,
109     DPI_AWARENESS_UNAWARE = 0,
110     DPI_AWARENESS_SYSTEM_AWARE = 1,
111     DPI_AWARENESS_PER_MONITOR_AWARE = 2,
112 }}
113 pub const DPI_AWARENESS_CONTEXT_UNAWARE: DPI_AWARENESS_CONTEXT = -1isize as DPI_AWARENESS_CONTEXT;
114 pub const DPI_AWARENESS_CONTEXT_SYSTEM_AWARE: DPI_AWARENESS_CONTEXT
115     = -2isize as DPI_AWARENESS_CONTEXT;
116 pub const DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE: DPI_AWARENESS_CONTEXT
117     = -3isize as DPI_AWARENESS_CONTEXT;
118