@@ 1,42 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "dx11-toy"
+version = "0.1.0"
+dependencies = [
+ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "wio 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "winapi"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "wio"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[metadata]
+"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770"
+"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+"checksum wio 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5"
@@ 1,11 @@
+[package]
+name = "dx11-toy"
+version = "0.1.0"
+authors = ["Raph Levien <raph.levien@gmail.com>"]
+edition = "2018"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+winapi = { version = "0.3.7", features = ["libloaderapi", "winuser"] }
+wio = "0.2.2"
@@ 1,52 @@
+use std::ptr::{null, null_mut};
+
+use winapi::um::{errhandlingapi, wingdi, winuser};
+
+use wio::wide::ToWide;
+
+fn main() {
+ unsafe {
+ let class_name = "dx11".to_wide_null();
+ let title = "dx11 toy".to_wide_null();
+ let icon = winuser::LoadIconW(null_mut(), winuser::IDI_APPLICATION);
+ let brush = wingdi::CreateSolidBrush(0xff_ff_ff);
+ let class = winuser::WNDCLASSW {
+ style: 0,
+ lpfnWndProc: Some(winuser::DefWindowProcW),
+ cbClsExtra: 0,
+ cbWndExtra: 0,
+ hInstance: null_mut(),
+ hIcon: icon,
+ hCursor: null_mut(),
+ hbrBackground: brush,
+ lpszMenuName: null(),
+ lpszClassName: class_name.as_ptr(),
+ };
+ let class_atom = winuser::RegisterClassW(&class);
+ println!("class atom = {}", class_atom);
+ let hwnd = winuser::CreateWindowExW(
+ 0,
+ class_name.as_ptr(),
+ title.as_ptr(),
+ winuser::WS_OVERLAPPEDWINDOW | winuser::WS_VISIBLE,
+ winuser::CW_USEDEFAULT,
+ winuser::CW_USEDEFAULT,
+ winuser::CW_USEDEFAULT,
+ winuser::CW_USEDEFAULT,
+ null_mut(),
+ null_mut(),
+ null_mut(),
+ null_mut(),
+ );
+ println!("hwnd = {:?}, {:x}", hwnd, errhandlingapi::GetLastError());
+
+ loop {
+ let mut msg = std::mem::zeroed();
+ if winuser::GetMessageW(&mut msg, null_mut(), 0, 0) == 0 {
+ break;
+ }
+ winuser::TranslateMessage(&mut msg);
+ winuser::DispatchMessageW(&mut msg);
+ }
+ }
+}