use crate::co;
use crate::decl::*;
use crate::gui::privs::*;
use crate::msg::*;
use crate::prelude::*;
pub trait GuiEventsTrackbar: priv_ctrl_events::GuiEvents {
fn_nfy_withparm_noret! { trbn_thumb_pos_changing, co::TRBN::THUMBPOSCHANGING, NMTRBTHUMBPOSCHANGING;
}
fn wm_h_scroll<F>(&self, func: F)
where
F: Fn(wm::HScroll) -> AnyResult<()> + 'static,
{
let def_proc_val = self.wnd_ty().def_proc_val();
self.wm(co::WM::HSCROLL, move |p| {
func(unsafe { wm::HScroll::from_generic_wm(p) })?;
Ok(def_proc_val)
});
}
fn wm_v_scroll<F>(&self, func: F)
where
F: Fn(wm::VScroll) -> AnyResult<()> + 'static,
{
let def_proc_val = self.wnd_ty().def_proc_val();
self.wm(co::WM::VSCROLL, move |p| {
func(unsafe { wm::VScroll::from_generic_wm(p) })?;
Ok(def_proc_val)
});
}
fn nm_custom_draw<F>(&self, func: F)
where
F: Fn(&NMCUSTOMDRAW) -> AnyResult<co::CDRF> + 'static,
{
self.wm_notify(co::NM::CUSTOMDRAW, move |p| {
Ok(func(unsafe { p.cast_nmhdr::<NMCUSTOMDRAW>() })?.raw() as _)
});
}
fn_nfy_noparm_noret! { nm_released_capture, co::NM::RELEASEDCAPTURE;
}
}
impl GuiEventsTrackbar for BaseCtrlEvents {}