/* * Enhanced Event Handling Demo * This example showcases all available event types in Crafter.CppDOM */ import Crafter.CppDOM; using namespace Crafter; import std; // Create the main container element HtmlElementView* body = new HtmlElementView("body", "
Click: X={}, Y={}
", event.clientX, event.clientY)); }); mouseButton->AddMouseOverListener([&](MouseEvent event) { mouseOutput->SetInnerHTML(std::format("Mouse Over: X={}, Y={}
", event.clientX, event.clientY)); }); mouseButton->AddMouseOutListener([&](MouseEvent event) { mouseOutput->SetInnerHTML(std::format("Mouse Out: X={}, Y={}
", event.clientX, event.clientY)); }); mouseButton->AddMouseMoveListener([&](MouseEvent event) { mouseOutput->SetInnerHTML(std::format("Mouse Move: X={}, Y={}
", event.clientX, event.clientY)); }); mouseButton->AddMouseDownListener([&](MouseEvent event) { mouseOutput->SetInnerHTML(std::format("Mouse Down: Button={}, X={}, Y={}
", event.button, event.clientX, event.clientY)); }); mouseButton->AddMouseUpListener([&](MouseEvent event) { mouseOutput->SetInnerHTML(std::format("Mouse Up: Button={}, X={}, Y={}
", event.button, event.clientX, event.clientY)); }); // Keyboard Events keyInput->AddKeyDownListener([&](KeyboardEvent event) { std::string keyInfo = std::format("Key Down: Key='{}', Code={}, Ctrl={}, Shift={}, Alt={}
", event.key, event.keyCode, event.ctrlKey, event.shiftKey, event.altKey); keyOutput->SetInnerHTML(keyInfo); }); keyInput->AddKeyUpListener([&](KeyboardEvent event) { std::string keyInfo = std::format("Key Up: Key='{}', Code={}, Ctrl={}, Shift={}, Alt={}
", event.key, event.keyCode, event.ctrlKey, event.shiftKey, event.altKey); keyOutput->SetInnerHTML(keyInfo); }); keyInput->AddKeyPressListener([&](KeyboardEvent event) { std::string keyInfo = std::format("Key Press: Key='{}', Code={}, Ctrl={}, Shift={}, Alt={}
", event.key, event.keyCode, event.ctrlKey, event.shiftKey, event.altKey); keyOutput->SetInnerHTML(keyInfo); }); // Focus Events focusInput->AddFocusListener([&](FocusEvent event) { focusOutput->SetInnerHTML("Focus: Element gained focus
"); }); focusInput->AddBlurListener([&](FocusEvent event) { focusOutput->SetInnerHTML("Blur: Element lost focus
"); }); // Form Events formInput->AddInputListener([&](InputEvent event) { formOutput->SetInnerHTML(std::format("Input: Value='{}'
", event.data)); }); formInput->AddChangeListener([&](ChangeEvent event) { formOutput->SetInnerHTML(std::format("Change: Value='{}'
", event.value)); }); formSelect->AddChangeListener([&](ChangeEvent event) { formOutput->SetInnerHTML(std::format("Select Change: Value='{}'
", event.value)); }); // Submit Event formElement->AddSubmitListener([&]() { formOutput->SetInnerHTML("Submit: Form submitted successfully!
"); }); // Window Events // Resize event body->AddResizeListener([&](ResizeEvent event) { windowOutput->SetInnerHTML(std::format("Resize: Width={}, Height={}
", event.width, event.height)); }); // Scroll event body->AddScrollListener([&](ScrollEvent event) { windowOutput->SetInnerHTML(std::format("Scroll: X={}, Y={}
", event.scrollX, event.scrollY)); }); // Context Menu Event body->AddContextMenuListener([&](MouseEvent event) { windowOutput->SetInnerHTML(std::format("Context Menu: X={}, Y={}
", event.clientX, event.clientY)); }); // Drag and Drop Events dragSource->AddDragStartListener([&](MouseEvent event) { dragOutput->SetInnerHTML("Drag Start: Dragging started
"); }); dragSource->AddDragEndListener([&](MouseEvent event) { dragOutput->SetInnerHTML("Drag End: Dragging ended
"); }); dropTarget->AddDragOverListener([&](MouseEvent event) { dragOutput->SetInnerHTML("Drag Over: Dragging over drop target
"); }); dropTarget->AddDragEnterListener([&](MouseEvent event) { dragOutput->SetInnerHTML("Drag Enter: Drag entered drop target
"); }); dropTarget->AddDragLeaveListener([&](MouseEvent event) { dragOutput->SetInnerHTML("Drag Leave: Drag left drop target
"); }); dropTarget->AddDropListener([&](MouseEvent event) { dragOutput->SetInnerHTML("Drop: Item dropped
"); }); // Wheel Event wheelContainer->AddWheelListener([&](WheelEvent event) { wheelOutput->SetInnerHTML(std::format("Wheel: DeltaX={}, DeltaY={}, DeltaZ={}
", event.deltaX, event.deltaY, event.deltaZ)); }); return 0; }