首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从winit那里弄到窗户?

从winit那里弄到窗户?
EN

Stack Overflow用户
提问于 2022-05-13 00:01:13
回答 1查看 413关注 0票数 2

我对锈病相当陌生,我正试图让以下几点发挥作用:

代码语言:javascript
复制
 let hwnd : *mut HWND = window.hwnd().cast();
 let swapchain = unsafe { factory.CreateSwapChainForHwnd(&device, *hwnd, &desc, std::ptr::null(), &output)? } ;

其中,window.hwnd()返回一个*mut c_void,我需要将其转换为一个windows::Windows::Win32::Foundation::HWND,但是这个示例会在访问冲突中崩溃。我假设这是因为我删除了指向HWND的指针,而HWND本身应该是无效的ptr。HWND可以从一个isize创建,比如HWND(isize),但是我不确定它是否应该得到空指针的地址还是什么的?任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-13 00:37:15

您正确地认为需要将指针转换为isize,因此尽管在指针来源方面与最近的发展发生冲突,但我认为构造HWND的正确方法如下:

代码语言:javascript
复制
let hwnd = HWND(window.hwnd() as isize);

isizeusize被定义为指针宽度,因此将原始指针转换为这些类型之一是零成本,本质上只是擦除类型信息。

注意,这是因为HWND只是一个新类型的结构,它的单个字段是pub isize,所以HWND(val)语法只是将该字段设置为val来初始化结构。要访问该字段,只需执行my_hwnd.0,并通过my_hwnd.0 as *mut T转换为指针。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72223205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档