Add ability to assign a menu when creating a window on Windows (#1842)
This commit is contained in:
parent
bd99eb1347
commit
b1d353180b
5 changed files with 27 additions and 3 deletions
|
|
@ -1,6 +1,6 @@
|
|||
#![cfg(target_os = "windows")]
|
||||
|
||||
use winapi::{self, shared::windef::HWND};
|
||||
use winapi::{self, shared::windef::HMENU, shared::windef::HWND};
|
||||
|
||||
pub use self::{
|
||||
event_loop::{EventLoop, EventLoopProxy, EventLoopWindowTarget},
|
||||
|
|
@ -18,6 +18,7 @@ use crate::window::Theme;
|
|||
#[derive(Clone)]
|
||||
pub struct PlatformSpecificWindowBuilderAttributes {
|
||||
pub parent: Option<HWND>,
|
||||
pub menu: Option<HMENU>,
|
||||
pub taskbar_icon: Option<Icon>,
|
||||
pub no_redirection_bitmap: bool,
|
||||
pub drag_and_drop: bool,
|
||||
|
|
@ -28,6 +29,7 @@ impl Default for PlatformSpecificWindowBuilderAttributes {
|
|||
fn default() -> Self {
|
||||
Self {
|
||||
parent: None,
|
||||
menu: None,
|
||||
taskbar_icon: None,
|
||||
no_redirection_bitmap: false,
|
||||
drag_and_drop: true,
|
||||
|
|
|
|||
|
|
@ -711,6 +711,10 @@ unsafe fn init<T: 'static>(
|
|||
window_flags.set(WindowFlags::CHILD, pl_attribs.parent.is_some());
|
||||
window_flags.set(WindowFlags::ON_TASKBAR, true);
|
||||
|
||||
if pl_attribs.parent.is_some() && pl_attribs.menu.is_some() {
|
||||
warn!("Setting a menu on windows that have a parent is unsupported");
|
||||
}
|
||||
|
||||
// creating the real window this time, by using the functions in `extra_functions`
|
||||
let real_window = {
|
||||
let (style, ex_style) = window_flags.to_window_styles();
|
||||
|
|
@ -724,7 +728,7 @@ unsafe fn init<T: 'static>(
|
|||
winuser::CW_USEDEFAULT,
|
||||
winuser::CW_USEDEFAULT,
|
||||
pl_attribs.parent.unwrap_or(ptr::null_mut()),
|
||||
ptr::null_mut(),
|
||||
pl_attribs.menu.unwrap_or(ptr::null_mut()),
|
||||
libloaderapi::GetModuleHandleW(ptr::null()),
|
||||
ptr::null_mut(),
|
||||
);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue