https://github.com/cogan-software/hlwa
High-Level Windows Abstraction API to help developers access and manage the windows API (such as the registry) for application development in C++.
https://github.com/cogan-software/hlwa
api cpp library lightweight registry windows
Last synced: 2 months ago
JSON representation
High-Level Windows Abstraction API to help developers access and manage the windows API (such as the registry) for application development in C++.
- Host: GitHub
- URL: https://github.com/cogan-software/hlwa
- Owner: COGAN-SOFTWARE
- License: gpl-3.0
- Created: 2025-05-05T22:29:53.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-05-06T16:04:10.000Z (about 1 year ago)
- Last Synced: 2025-05-06T16:47:58.641Z (about 1 year ago)
- Topics: api, cpp, library, lightweight, registry, windows
- Language: C++
- Homepage:
- Size: 28.6 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# HLWA
---
### About
**PROJECT BEING ARCHIVED**: Entire restructuring of library codebases, and enabling cross-compatibility. For that reason, this and many other projects are being archived until new versions are made public; archived project may still have bugs or features not complete.
> HLWA stands for High-Level Windows Abstraction and is an API developed for C++ developers to quickly build code to access the windows API for projects. This project originally was named HLWR (High-Level Windows Registry) however I've been merging all projects together into one main abstraction.
---
### How To Compile
> **Note**: If you want to user the compiled static library, output build location is %root%/bin/HLWA/%buildcfg%-%system%-%architecture%/HLWA.lib.
> **Note**: Be aware, by default, `CS_HLWA_E_ALL` is defined in both `premake5.lua` & `CMakeLists.txt` for project `HLWA` (however each extension or all extensions can be enabled when including the header file).
##### Visual Studio (+ premake5)
- Run `build-premake5-vs22-clang.bat`.
- Open `HLWA.sln`.
- Compile for Build/Release.
##### Visual Studio (+ CMake)
- Run `build-cmake-vs22-clang.bat`.
- Goto `build/`.
- Open `HLWA.sln`.
- Compile for Build/Release.
##### CMake (clang/gcc) **DOES NOT CURRENTLY WORK**
- Run `build-cmake-clang.bat` or `build-cmake-gcc.bat`.
- Run `compile-cmake-debug.bat` or `compile-cmake-release.bat`. **As of right now, this does not work as intended!!!**
---
### FAQ
> **Q**: I thought this was a lightweight single-header API?
> **A**: As of recent, some code has been moved into an implementation file; however it's still lightweight and can be thrown directly in your project.
> **Q**: Can I use UTF8 instead of UTF16 strings?
> **A**: Yes you can, define `CS_GWR_USEUTF8STRINGS` before including this header file.
> **Q**: Will `Windows.h` leak into my project?
> **A**: No, in a previous update converting from single-header API to a simple lightweight API, we moved the `#include` statement into the implementation file and forward declared `HKEY` internally (this is currently still visible though; no direct windows functionality however).
> **Q**: When will standalone CMake clang/gcc work?
> **A**: I'm not focusing on those issues right now, however if anyone has a solution to the cli errors when compiling the CMake project using standalone compilers, please reach out to us.
> **Q**: The code for user input looks like GLFW, is this true?
> **A**: All credit for how input is interpreted goes to GLFW, while I did do all my touches and features as well as how some things get passed to the user, ultimately it's all derived from GLFW; otherwise everything else (except for repainting in the `WindowProc`) is solely self-developed. One change that I have been trying to focus on is making it depend on scancodes rather then QWERTY layout specifications.
---
### How To Use
##### Enabling Extensions
> The API is split up between extensions, all of which can contribute to one another but built in isolated sections of code. It's recommended to only include `core.hpp` and specify the extension as macros of which you want to use. Here are a list of extensions you can enable:
> **Note**: Documentation for each extension coming soon...
- `CS_HLWA_E_ALL`
- `CS_HLWA_E_ACCENTS`
- `CS_HLWA_E_DISPLAYMESH`
- `CS_HLWA_E_GLASSWARE`
- `CS_HLWA_E_JUMPLIST` **WIP; Planned (experimenting).**
- `CS_HLWA_E_LOGPROCESSOR`
- `CS_HLWA_E_REGISTRY`
- `CS_HLWA_E_TASKBAR`
- `CS_HLWA_E_TOAST` **WIP; Planned (experimenting).**
- `CS_HLWA_E_TRAY` **WIP; Planned (experimenting).**
- `CS_HLWA_E_UTILS`
##### Examples
> Examples have been moved into separate projects under `examples/`. Each extension provides at least 1 basic example.