- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 winit
创建一个窗口 crate 始终在顶部( HWND_TOPMOST
)。我正在创建我的窗口,并获得 RawWindowHandle::Windows
从中。那个struct有一个 pub hwnd
这是一个 *mut c_void
.我现在的问题是,我该如何转换 *mut c_void
到 *mut winapi::shared::windef::HWND__
所以我可以把它传递给 winapi::winuser::SetWindowPos(...)
?
这是我获取原始窗口句柄的代码:
let win_handle = match window.raw_window_handle() {
RawWindowHandle::Windows(windows_handle) => windows_handle.hwnd,
_ => panic!("Unsupported platform!"),
};
这是我通过的代码
win_handle
至
SetWindowPos
:
unsafe {
if winuser::SetWindowPos(win_handle, winuser::HWND_TOPMOST, 0, 0, 0, 0, winuser::SWP_NOMOVE | winuser::SWP_NOSIZE) == 1 {
println!("Success");
} else {
println!("Failure");
}
}
我究竟做错了什么?
最佳答案
原来,有一个 HWND struct您可以简单地将 *mut c_void
转换到其中,像这样:
let winapi_handle = win_handle as winuser::shared::windef::HWND;
// Or even simple, cast it in the call with 'as _'
// Shoutout to @IInspectable
SetWindowPos(win_handle as _, winuser::HWND_TOPMOST, 0, 0, 0, 0, winuser::SWP_NOMOVE | winuser::SWP_NOSIZE)
编辑:只是在我尝试了这个之后,我才真正在谷歌上搜索了“Winit 设置窗口总是在顶部”并找到了
this .因此,在使用
WindowBuilder
构建窗口时你可以简单地打电话
window_builder.with_always_on_top(true)
它会在所有支持的平台上为您完成(Linux、Windows 和 MacOS。Adnroid、iOS 和 Web 不支持它)
关于winapi - 如何将 RawWindowHandle::Windows 传递给 winapi::winuser::SetWindowPos,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64368724/
我一直找不到关于此功能的任何合适的文档。我正在使用的代码库使用 winuser.h 中名为 LoadStringW 的函数,该函数采用以下参数:(HINSTANCE hInstance, UINT u
我正在尝试使用 SetWinEventHook ,但是当我尝试使用 MinGW 进行编译时,它说 SetWinEventHook以及一些其他定义和函数“未在此范围内声明”。 我用谷歌搜索了很多,发现我
我正在尝试使用 winit 创建一个窗口 crate 始终在顶部( HWND_TOPMOST )。我正在创建我的窗口,并获得 RawWindowHandle::Windows从中。那个struct有一
我创建了一个简单的应用程序来结合使用 opengl 和 MFC。问题是我有以下代码 ReleaseDC(m_hWnd,m_hDC); 根据 https://msdn.microsoft.com/en-
你好 StackOverflow 社区 我已经搜索了很长时间,但没有找到解决我的问题的方法。我现在正在做一个项目,我必须将 Windows 工具移植到 Linux 操作系统(具体来说是 Ubuntu
在 Windows 上开发 Qt 应用程序。我只在我的源文件中包含 QVboxLayout,这会导致错误,因为它的宏会覆盖我的方法名称。 foo.hpp class foo { ChangeM
我是一名优秀的程序员,十分优秀!