mirror of
https://github.com/italicsjenga/rust_minifb.git
synced 2024-12-23 19:31:30 +11:00
Support topmost functionality in Windows (#201)
Most of this was taken from #159. This does not include the API addition of adding a topmost call on Window. That should probably be in another PR. And the doc fixes as well. Used implementation from https://github.com/emoon/rust_minifb/pull/159#discussion_r401374050 Co-authored-by: phillvancejr <phillipvancejr@gmail.com> Co-authored-by: Daniel Collin <daniel@collin.com> Co-authored-by: phillvancejr <phillipvancejr@gmail.com> Co-authored-by: Daniel Collin <daniel@collin.com>
This commit is contained in:
parent
49004f4380
commit
291d8a0441
23
examples/topmost.rs
Normal file
23
examples/topmost.rs
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
use minifb::{Key, ScaleMode, Window, WindowOptions};
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
// Allocate the output buffer.
|
||||||
|
let buf = vec![0x00FFFF00; 320 * 480];
|
||||||
|
|
||||||
|
let mut window = Window::new(
|
||||||
|
"Press ESC to exit",
|
||||||
|
320,
|
||||||
|
480,
|
||||||
|
WindowOptions {
|
||||||
|
resize: true,
|
||||||
|
scale_mode: ScaleMode::Center,
|
||||||
|
topmost: true,
|
||||||
|
..WindowOptions::default()
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.expect("Unable to open Window");
|
||||||
|
|
||||||
|
while window.is_open() && !window.is_key_down(Key::Escape) {
|
||||||
|
window.update_with_buffer(&buf, 320, 480).unwrap();
|
||||||
|
}
|
||||||
|
}
|
|
@ -610,6 +610,10 @@ impl Window {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if opts.topmost {
|
||||||
|
window.topmost(true)
|
||||||
|
}
|
||||||
|
|
||||||
Ok(window)
|
Ok(window)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -986,6 +990,25 @@ impl Window {
|
||||||
Some(t)
|
Some(t)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
fn topmost(&self, topmost: bool) {
|
||||||
|
unsafe {
|
||||||
|
winuser::SetWindowPos(
|
||||||
|
self.window.unwrap(),
|
||||||
|
if topmost == true {
|
||||||
|
winuser::HWND_TOPMOST
|
||||||
|
} else {
|
||||||
|
winuser::HWND_TOP
|
||||||
|
},
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
winuser::SWP_SHOWWINDOW | winuser::SWP_NOSIZE | winuser::SWP_NOMOVE,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
|
|
Loading…
Reference in a new issue