use crate::co;
use crate::decl::*;
use crate::macros::*;
use crate::msg::*;
use crate::prelude::*;
use crate::user::privs::*;
pub_struct_msg_ctlcolor! { WmCtlColorBtn: co::WM::CTLCOLORBTN;
}
pub_struct_msg_ctlcolor! { WmCtlColorDlg: co::WM::CTLCOLORDLG;
}
pub_struct_msg_ctlcolor! { WmCtlColorEdit: co::WM::CTLCOLOREDIT;
}
pub_struct_msg_ctlcolor! { WmCtlColorListBox: co::WM::CTLCOLORLISTBOX;
}
pub_struct_msg_ctlcolor! { WmCtlColorScrollBar: co::WM::CTLCOLORSCROLLBAR;
}
pub_struct_msg_ctlcolor! { WmCtlColorStatic: co::WM::CTLCOLORSTATIC;
}
pub_struct_msg_char_code! { WmDeadChar: co::WM::DEADCHAR;
}
pub struct WmDisplayChange {
pub depth_bpp: u32,
pub horz_res: u16,
pub vert_res: u16,
}
impl MsgSend for WmDisplayChange {
type RetType = ();
unsafe fn isize_to_ret(&self, _: isize) -> Self::RetType {
()
}
fn as_generic_wm(&mut self) -> Wm {
Wm {
msg_id: co::WM::DISPLAYCHANGE,
wparam: self.depth_bpp as _,
lparam: MAKEDWORD(self.horz_res, self.vert_res) as _,
}
}
}
impl MsgSendRecv for WmDisplayChange {
unsafe fn from_generic_wm(p: Wm) -> Self {
Self {
depth_bpp: p.wparam as _,
horz_res: LOWORD(p.lparam as _),
vert_res: HIWORD(p.lparam as _),
}
}
}
pub struct WmGetFont {}
impl MsgSend for WmGetFont {
type RetType = Option<HFONT>;
unsafe fn isize_to_ret(&self, v: isize) -> Self::RetType {
zero_as_none(v).map(|p| unsafe { HFONT::from_ptr(p as _) })
}
fn as_generic_wm(&mut self) -> Wm {
Wm {
msg_id: co::WM::GETFONT,
wparam: 0,
lparam: 0,
}
}
}
impl MsgSendRecv for WmGetFont {
unsafe fn from_generic_wm(_: Wm) -> Self {
Self {}
}
}
pub struct WmNcPaint {
pub updated_hrgn: HRGN,
}
impl MsgSend for WmNcPaint {
type RetType = ();
unsafe fn isize_to_ret(&self, _: isize) -> Self::RetType {
()
}
fn as_generic_wm(&mut self) -> Wm {
Wm {
msg_id: co::WM::NCPAINT,
wparam: self.updated_hrgn.ptr() as _,
lparam: 0,
}
}
}
impl MsgSendRecv for WmNcPaint {
unsafe fn from_generic_wm(p: Wm) -> Self {
Self {
updated_hrgn: unsafe { HRGN::from_ptr(p.wparam as _) },
}
}
}
pub_struct_msg_empty_handleable! { WmPaint: co::WM::PAINT;
}
pub struct WmSetFont {
pub hfont: HFONT,
pub redraw: bool,
}
impl MsgSend for WmSetFont {
type RetType = ();
unsafe fn isize_to_ret(&self, _: isize) -> Self::RetType {
()
}
fn as_generic_wm(&mut self) -> Wm {
Wm {
msg_id: co::WM::SETFONT,
wparam: self.hfont.ptr() as _,
lparam: MAKEDWORD(self.redraw as _, 0) as _,
}
}
}
impl MsgSendRecv for WmSetFont {
unsafe fn from_generic_wm(p: Wm) -> Self {
Self {
hfont: unsafe { HFONT::from_ptr(p.wparam as _) },
redraw: LOWORD(p.lparam as _) != 0,
}
}
}
pub struct WmSetRedraw {
pub can_redraw: bool,
}
impl MsgSend for WmSetRedraw {
type RetType = ();
unsafe fn isize_to_ret(&self, _: isize) -> Self::RetType {
()
}
fn as_generic_wm(&mut self) -> Wm {
Wm {
msg_id: co::WM::SETREDRAW,
wparam: self.can_redraw as _,
lparam: 0,
}
}
}
impl MsgSendRecv for WmSetRedraw {
unsafe fn from_generic_wm(p: Wm) -> Self {
Self { can_redraw: p.wparam != 0 }
}
}
pub_struct_msg_empty_handleable! { WmSyncPaint: co::WM::SYNCPAINT;
}