#pragma once #include #include "ui/control.h" namespace cru::ui::controls { class Button : public Control { public: static Button* Create(const std::initializer_list& children = std::initializer_list()) { const auto button = new Button(); for (const auto control : children) button->AddChild(control); return button; } protected: Button(); public: Button(const Button& other) = delete; Button(Button&& other) = delete; Button& operator=(const Button& other) = delete; Button& operator=(Button&& other) = delete; ~Button() override = default; protected: void OnDraw(ID2D1DeviceContext* device_context) override; void OnMouseClickBegin(MouseButton button) override final; void OnMouseClickEnd(MouseButton button) override final; private: Microsoft::WRL::ComPtr normal_border_brush_; Microsoft::WRL::ComPtr pressed_border_brush_; ID2D1Brush* current_border_brush_; }; }