比较 Rust 中的 WPARAM 和 VIRTUAL_KEY

问题描述 投票:0回答:1

我正在尝试使用 wndproc 中的 WPARAM 参数来使用“windows”板条箱获取键盘输入。我发现一个 github 存储库试图实现相同的目标(链接到此处的特定代码),并且他们已成功将 WPARAM 转换为 i32。当我尝试做完全相同的事情时,我收到错误

Non-primitive cast: `WPARAM` as `i32` [E0605]
。由于我发现的回购协议相当旧,我想板条箱已经发生了变化,我不确定我应该做些什么不同的事情。这是我的代码片段(如果有帮助的话):

extern "system" fn wnd_proc(window: HWND, message: u32, w_param: WPARAM, l_param: LPARAM)
    -> LRESULT {
    unsafe {
        match message {
            ...
            WM_SYSKEYDOWN => {
                let vk_code: i32 = w_param as i32;
            }
            ...
        }
    }
}
windows winapi rust
1个回答
0
投票

TL;DR:将

w_param as i32
替换为
w_param.0 as i32


windows
板条箱充分使用了新类型习语。它是一个强大的工具,利用类型系统通过发明(最好是零开销)包装器类型来防止对数据的误解,这些包装器类型封装了数据的语义信息,否则将使用相同的二进制类型表示。

© www.soinside.com 2019 - 2024. All rights reserved.