diff --git a/src/platform/windows/events_loop.rs b/src/platform/windows/events_loop.rs index 6f34c0a0..11716bac 100644 --- a/src/platform/windows/events_loop.rs +++ b/src/platform/windows/events_loop.rs @@ -281,7 +281,7 @@ pub unsafe extern "system" fn callback(window: winapi::HWND, msg: winapi::UINT, -> winapi::LRESULT { match msg { - winapi::WM_DESTROY => { + winapi::WM_CLOSE => { use events::WindowEvent::Closed; send_event(Event::WindowEvent { window_id: SuperWindowId(WindowId(window)), @@ -291,7 +291,7 @@ pub unsafe extern "system" fn callback(window: winapi::HWND, msg: winapi::UINT, let mut context_stash = context_stash.borrow_mut(); context_stash.as_mut().unwrap().windows.remove(&window); }); - 0 + user32::DefWindowProcW(window, msg, wparam, lparam) }, winapi::WM_ERASEBKGND => { diff --git a/src/platform/windows/window.rs b/src/platform/windows/window.rs index d0f1189b..d737a36b 100644 --- a/src/platform/windows/window.rs +++ b/src/platform/windows/window.rs @@ -282,7 +282,9 @@ impl Drop for Window { #[inline] fn drop(&mut self) { unsafe { - user32::PostMessageW(self.window.0, winapi::WM_DESTROY, 0, 0); + // We are sending WM_CLOSE, and our callback will process this by calling DefWindowProcW, + // which in turn will send a WM_DESTROY. + user32::PostMessageW(self.window.0, winapi::WM_CLOSE, 0, 0); } } }