我正在尝试使用 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;
}
...
}
}
}
TL;DR:将
w_param as i32
替换为 w_param.0 as i32
。
windows
板条箱充分使用了新类型习语。它是一个强大的工具,利用类型系统通过发明(最好是零开销)包装器类型来防止对数据的误解,这些包装器类型封装了数据的语义信息,否则将使用相同的二进制类型表示。