You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rust的Windows crate中调用GetStockObject Win32 API

Rust windows crate 调用GetStockObject获取白色画刷实现方案

首先在Cargo.toml中添加windows crate依赖,启用必须的Win32 GDI相关特性:

[dependencies]
windows = { version = "0.52", features = ["Win32_Foundation", "Win32_Graphics_Gdi"] }

代码实现

导入所需依赖项后直接调用对应Win32接口即可,完全不需要用到CreateSolidColorBrush:

use windows::Win32::Foundation::HGDIOBJ;
use windows::Win32::Graphics::Gdi::{GetStockObject, WHITE_BRUSH, HBRUSH};

fn get_white_brush() -> HBRUSH {
    // 等效C代码:HBRUSH hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
    unsafe {
        let stock_obj: HGDIOBJ = GetStockObject(WHITE_BRUSH);
        HBRUSH(stock_obj.0)
    }
}

注意事项

  • GetStockObject返回值类型为通用GDI对象句柄HGDIOBJ,需要手动提取句柄值转换为HBRUSH类型,对应C语言中的强制类型转换操作
  • 调用GetStockObject需要包裹在unsafe块中,符合Windows crate对FFI调用的安全约束
  • 该方式获取的系统存量画刷不需要手动调用DeleteObject释放资源,遵循原生Win32 API的资源管理规则
  • 得到的HBRUSH可以直接用于窗口类注册、GDI绘制等所有原生Win32场景,用法和C/C++开发完全一致

内容的提问来源于stack exchange,提问作者MRahilly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:36:03