util.rs

 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}