Crates.io | MyGui |
lib.rs | MyGui |
version | 0.1.1 |
created_at | 2025-09-25 06:19:44.147595+00 |
updated_at | 2025-09-25 08:03:08.326882+00 |
description | A simple GUI application for Windows using the Rust 'windows' crate. For learning purposes only. You should not use this crate. |
homepage | https://github.com/Asurakun1/MyGui |
repository | https://github.com/Asurakun1/MyGui |
max_upload_size | |
id | 1854238 |
size | 61,950 |
Note: This project is a learning exercise in building a GUI framework from scratch using Rust and the raw Windows API. For production applications, consider using mature frameworks.
This project aims to create a simple, modular, and idiomatic Rust framework over the raw Windows API. It provides a foundational layer for building lightweight GUI applications, focusing on a clean architecture and a flexible API.
MyGui is built on a retained-mode rendering model. This means:
Scene
populated with Drawable
objects (like text, shapes, etc.).This contrasts with immediate-mode rendering, where the application must manually issue draw calls every single frame.
Scene
object that manages a collection of Drawable
trait objects.EventHandler
system allows for a clean separation of application logic from window messages.TextObject
for drawing text to the screen.I am actively working on evolving this project into a more flexible and powerful library. Key priorities include:
WindowBuilder
to allow for easy and idiomatic configuration of window properties (size, title, etc.).EventHandler
s to be registered, enabling better code organization for complex applications.IDWriteTextLayout
for correct and efficient text rendering.For a detailed list of tasks, see TASKS.md.
This project uses Cargo, Rust's package manager and build system.
cargo build
cargo run