windows-api-utils 0.2.0

Windows API utilities for coordinate conversion, bit operations, and message parameter handling with feature gating
Documentation
//! Demo for messages feature
//! Run with: cargo run --example messages_demo --features messages

#![cfg(feature = "messages")]

use windows_api_utils::prelude::*;

fn main() {
    println!("=== Messages Feature Demo ===");

    // Mouse messages
    let mouse_msg = WindowMessage::mouse_move(
        150,
        200,
        KeyModifiers {
            shift: true,
            ..Default::default()
        },
    );

    if let Some(mouse_event) = MessageParser::parse_mouse_message(mouse_msg) {
        println!("Mouse event: ({}, {})", mouse_event.x, mouse_event.y);
        println!("Modifiers: Shift={}", mouse_event.modifiers.shift);
    }

    // Mouse click
    let click_msg =
        WindowMessage::mouse_button(MouseButton::Left, true, 100, 200, KeyModifiers::default());

    if let Some(click_event) = MessageParser::parse_mouse_message(click_msg) {
        println!(
            "Click: {:?} at ({}, {})",
            click_event.button, click_event.x, click_event.y
        );
    }

    // Keyboard
    let key_msg = WindowMessage::key_event(windows_messages::WM_KEYDOWN, 0x41, 0x1E, 1);

    if let Some(key_event) = MessageParser::parse_key_message(key_msg) {
        println!(
            "Key: VK=0x{:02X}, Scan=0x{:02X}",
            key_event.virtual_key, key_event.scan_code
        );
    }
}