system-extensions 0.0.4

A robust set of extensions for operating system operations.
Documentation
use std::ffi::CString;
use crate::dialogues::messagebox::{MessageBox, BoxReturn};
use crate::core::Bitflagable;

pub fn create_message_box(message_box: MessageBox) -> Result<BoxReturn, String> {
    use winapi::um::winuser::MessageBoxA;
    use core::ptr::null_mut;

    let title_cstr: CString = CString::new(message_box.title).unwrap();
    let content_ctr: CString = CString::new(message_box.content).unwrap();

    let box_type = message_box.default_button.get_bits() | message_box.icon_type.get_bits() | message_box.window_type.get_bits();

    let result = unsafe { MessageBoxA(null_mut(), content_ctr.as_ptr(), title_cstr.as_ptr(), box_type) };

    if result == 0 {
        return Err("An error has occurred creating a MessageBox on Windows!".to_string());
    }

    Ok(BoxReturn::from_bits(result).unwrap())
}