#pragma once #include "capture.hpp" #include "config.hpp" #include enum class OverlayMode { Screenshot, GifQuick, }; class OverlayWindow { public: static HWND create(HINSTANCE instance, ScreenCapture&& capture, HWND notificationTarget, OverlayMode mode = OverlayMode::Screenshot); private: OverlayWindow(ScreenCapture&& capture, HWND notificationTarget, OverlayMode mode); ~OverlayWindow(); OverlayWindow(const OverlayWindow&) = delete; OverlayWindow& operator=(const OverlayWindow&) = delete; static LRESULT CALLBACK windowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); LRESULT handleMessage(UINT message, WPARAM wParam, LPARAM lParam); struct Impl; Impl* impl_; int dispatchDepth_ = 0; bool deletePending_ = false; };