use windows::Win32::{Foundation::HWND, UI::WindowsAndMessaging::WINDOW_LONG_PTR_INDEX};
pub mod window;
#[inline(always)]
unsafe fn get_window_long(hwnd: HWND, nindex: WINDOW_LONG_PTR_INDEX) -> isize
{
#[cfg(target_pointer_width = "64")]
return windows::Win32::UI::WindowsAndMessaging::GetWindowLongPtrW(hwnd, nindex);
#[cfg(target_pointer_width = "32")]
return windows::Win32::UI::WindowsAndMessaging::GetWindowLongW(hwnd, nindex) as isize;
}
#[inline(always)]
unsafe fn set_window_long(hwnd: HWND, nindex: WINDOW_LONG_PTR_INDEX, dwnewlong: isize) -> isize
{
#[cfg(target_pointer_width = "64")]
return windows::Win32::UI::WindowsAndMessaging::SetWindowLongPtrW(hwnd, nindex, dwnewlong);
#[cfg(target_pointer_width = "32")]
return windows::Win32::UI::WindowsAndMessaging::SetWindowLongW(hwnd, nindex, dwnewlong as i32) as isize;
}
#[cfg(test)]
mod tests
{
use std::time::Duration;
use crate::window::*;
#[test]
fn create_window()
{
let window = WindowBuilder::new()
.with_title("Mein Titel\0")
.with_size(Size::new(800, 600))
.build().expect("Fehler im Window Builder");
let mut window = window.make_current();
gl::load_with(|ptr| window.gl_context().get_proc_address(ptr) as *const _);
let mut test_done = false;
loop
{
window.poll();
while let Some(ev) = window.next()
{
if ev == Event::Exit
{
println!("Exit Message: {:?}", ev);
return;
}
if !test_done
{
unsafe
{
let id = gl::CreateShader(gl::VERTEX_SHADER);
println!("Shader: {}", id);
}
test_done = true;
}
}
window.swap_buffers();
std::thread::sleep(Duration::from_millis(15));
}
}
}