winsafe\gdi\handles/
hbitmap.rs1#![allow(non_camel_case_types, non_snake_case)]
2
3use crate::decl::*;
4use crate::gdi::ffi;
5use crate::guard::*;
6use crate::kernel::privs::*;
7use crate::prelude::*;
8
9impl GdiObject for HBITMAP {}
10
11impl HBITMAP {
12 #[must_use]
15 pub fn CreateBitmap(
16 sz: SIZE,
17 num_planes: u32,
18 bit_count: u32,
19 bits: *mut u8,
20 ) -> SysResult<DeleteObjectGuard<HBITMAP>> {
21 unsafe {
22 PtrRet(ffi::CreateBitmap(sz.cx, sz.cy, num_planes, bit_count, bits as _))
23 .to_invalidparm_handle()
24 .map(|h| DeleteObjectGuard::new(h))
25 }
26 }
27
28 pub fn GetObject(&self) -> SysResult<BITMAP> {
31 let mut bm = BITMAP::default();
32 BoolRet(unsafe {
33 ffi::GetObjectW(self.ptr(), std::mem::size_of::<BITMAP>() as _, pvoid(&mut bm))
34 })
35 .to_invalidparm()
36 .map(|_| bm)
37 }
38}