1use windows::Win32::Foundation::{LPARAM, WPARAM};
2
3pub(crate) trait HiLoWord {
4 fn hiword(&self) -> u16;
5 fn loword(&self) -> u16;
6 fn signed_hiword(&self) -> i16;
7 fn signed_loword(&self) -> i16;
8}
9
10impl HiLoWord for WPARAM {
11 fn hiword(&self) -> u16 {
12 ((self.0 >> 16) & 0xFFFF) as u16
13 }
14
15 fn loword(&self) -> u16 {
16 (self.0 & 0xFFFF) as u16
17 }
18
19 fn signed_hiword(&self) -> i16 {
20 ((self.0 >> 16) & 0xFFFF) as i16
21 }
22
23 fn signed_loword(&self) -> i16 {
24 (self.0 & 0xFFFF) as i16
25 }
26}
27
28impl HiLoWord for LPARAM {
29 fn hiword(&self) -> u16 {
30 ((self.0 >> 16) & 0xFFFF) as u16
31 }
32
33 fn loword(&self) -> u16 {
34 (self.0 & 0xFFFF) as u16
35 }
36
37 fn signed_hiword(&self) -> i16 {
38 ((self.0 >> 16) & 0xFFFF) as i16
39 }
40
41 fn signed_loword(&self) -> i16 {
42 (self.0 & 0xFFFF) as i16
43 }
44}