use super::{
Monitor,
Bitmap,
Icon,
WinError,
WindowEvent,
};
mod messages;
use messages::{
WindowMessage,
};
pub use messages::WindowResizeType;
mod window_procedure;
use window_procedure::{
setup_window_procedure,
window_procedure,
window_settings_auto_redraw,
};
mod window_class;
pub use window_class::{
CursorIcon,
SystemCursor,
Background,
WindowClass,
WindowClassAttributes,
WindowClassStyle,
WindowBackgroundSystemColour,
};
mod window;
pub use window::{
Window,
WindowStyle,
WindowStyles,
ExtendedWindowStyle,
ExtendedWindowStyles,
Fullscreen,
CreateParameters,
WindowAttributes,
};
use std::any::Any;
pub trait WindowProcedure{
type CreateParameters;
type Data:Copy;
fn create(window:&Window,parameters:&mut Self::CreateParameters)->Result<Self::Data,WinError>;
fn close_request(window:&Window,data:Self::Data);
fn destroy(window:&Window,data:Self::Data);
fn paint(window:&Window,data:Self::Data);
#[cfg(feature="set_cursor_event")]
fn set_cursor(window:&Window,data:Self::Data);
fn resized(client_size:[u16;2],resize_type:WindowResizeType,window:&Window,data:Self::Data);
fn moved(client_position:[i16;2],window:&Window,data:Self::Data);
fn handle(event:WindowEvent,window:&Window,data:Self::Data);
#[cfg(feature="wnd_proc_catch_panic")]
fn catch_panic(window:&Window,data:Self::Data,error:Box<dyn Any+Send>);
}
pub fn quit(exit_code:i32){
unsafe{
winapi::um::winuser::PostQuitMessage(exit_code);
}
}