win32: implement wakeup_event_loop

This commit is contained in:
Vladimir Vukicevic 2015-09-22 14:02:36 -04:00
parent 4af72a4109
commit 059821a99c
2 changed files with 17 additions and 3 deletions

View file

@ -281,6 +281,12 @@ pub unsafe extern "system" fn callback(window: winapi::HWND, msg: winapi::UINT,
0
},
x if x == *super::WAKEUP_MSG_ID => {
use events::Event::Awakened;
send_event(window, Awakened);
0
},
_ => {
user32::DefWindowProcW(window, msg, wparam, lparam)
}

View file

@ -38,6 +38,10 @@ mod event;
mod init;
mod monitor;
lazy_static! {
static ref WAKEUP_MSG_ID: u32 = unsafe { user32::RegisterWindowMessageA("Glutin::EventID".as_ptr() as *const i8) };
}
/// The Win32 implementation of the main `Window` object.
pub struct Window {
/// Main handle for the window.
@ -75,11 +79,15 @@ impl Drop for WindowWrapper {
}
#[derive(Clone)]
pub struct WindowProxy;
pub struct WindowProxy {
hwnd: winapi::HWND,
}
impl WindowProxy {
pub fn wakeup_event_loop(&self) {
unimplemented!()
unsafe {
user32::PostMessageA(self.hwnd, *WAKEUP_MSG_ID, 0, 0);
}
}
}
@ -189,7 +197,7 @@ impl Window {
}
pub fn create_window_proxy(&self) -> WindowProxy {
WindowProxy
WindowProxy { hwnd: self.window.0 }
}
/// See the docs in the crate root file.