pnte 0.3.3

2D Graphics library for Windows in Rust
Documentation
use windows::Win32::System::Com::*;

#[derive(Clone, Copy, PartialEq, Eq, Debug, Hash)]
pub enum CoInit {
    ApartmentThreaded,
    MultiThreaded,
}

#[inline]
pub fn co_initialize(object: CoInit) -> windows::core::Result<()> {
    let object = match object {
        CoInit::ApartmentThreaded => COINIT_APARTMENTTHREADED,
        CoInit::MultiThreaded => COINIT_MULTITHREADED,
    };
    unsafe {
        CoInitializeEx(None, object | COINIT_DISABLE_OLE1DDE).ok()?;
    }
    Ok(())
}

#[inline]
pub fn co_uninitialize() {
    unsafe {
        CoUninitialize();
    }
}