import Crafter.CppDOM; using namespace Crafter; import std; HtmlElement* body = new HtmlElement("body", "
" "

Enhanced Event Handling Demo

" "" "" "" "" "
" "
"); HtmlElement* clickButton = new HtmlElement("clickButton"); HtmlElement* mouseButton = new HtmlElement("mouseButton"); HtmlElement* keyInput = new HtmlElement("keyInput"); HtmlElement* changeInput = new HtmlElement("changeInput"); HtmlElement* output = new HtmlElement("output"); int main(){ // Click event - simple handler clickButton->AddClickListener([&]() { output->SetInnerHTML("

Simple click event triggered!

"); }); // Mouse events with position data // mouseButton->AddMouseMoveListener([&](MouseEvent event) { // output->SetInnerHTML("

Mouse moved to: (" + std::to_string(event.clientX) + ", " + std::to_string(event.clientY) + ")

"); // }); // Keyboard events with rich data keyInput->AddKeyDownListener([&](KeyboardEvent event) { std::string keyInfo = std::format("

Key pressed: {}

", event.key); if (event.ctrlKey) keyInfo += "

Ctrl key pressed

"; if (event.shiftKey) keyInfo += "

Shift key pressed

"; if (event.altKey) keyInfo += "

Alt key pressed

"; output->SetInnerHTML(keyInfo); }); // // Input event with data // keyInput->AddInputListener([&](InputEvent event) { // output->SetInnerHTML(std::format("

Input data: {} (composing: {})

", event.data, event.isComposing)); // }); // Change event with value changeInput->AddChangeListener([&](ChangeEvent event) { output->SetInnerHTML("

Input value changed to: '" + event.value + "'

"); }); // Context menu with position mouseButton->AddContextMenuListener([&](MouseEvent event) { output->SetInnerHTML("

Context menu at: (" + std::to_string(event.clientX) + ", " + std::to_string(event.clientY) + ")

"); }); // Resize event body->AddResizeListener([&](ResizeEvent event) { output->SetInnerHTML("

Window resized to: " + std::to_string(event.width) + "x" + std::to_string(event.height) + "

"); }); // Scroll event body->AddScrollListener([&](ScrollEvent event) { output->SetInnerHTML("

Scrolled to: (" + std::to_string(event.scrollX) + ", " + std::to_string(event.scrollY) + ")

"); }); }