| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | 
							- #ifndef RUNNER_WIN32_WINDOW_H_
 
- #define RUNNER_WIN32_WINDOW_H_
 
- #include <windows.h>
 
- #include <functional>
 
- #include <memory>
 
- #include <string>
 
- // A class abstraction for a high DPI-aware Win32 Window. Intended to be
 
- // inherited from by classes that wish to specialize with custom
 
- // rendering and input handling
 
- class Win32Window {
 
-  public:
 
-   struct Point {
 
-     unsigned int x;
 
-     unsigned int y;
 
-     Point(unsigned int x, unsigned int y) : x(x), y(y) {}
 
-   };
 
-   struct Size {
 
-     unsigned int width;
 
-     unsigned int height;
 
-     Size(unsigned int width, unsigned int height)
 
-         : width(width), height(height) {}
 
-   };
 
-   Win32Window();
 
-   virtual ~Win32Window();
 
-   // Creates and shows a win32 window with |title| and position and size using
 
-   // |origin| and |size|. New windows are created on the default monitor. Window
 
-   // sizes are specified to the OS in physical pixels, hence to ensure a
 
-   // consistent size to will treat the width height passed in to this function
 
-   // as logical pixels and scale to appropriate for the default monitor. Returns
 
-   // true if the window was created successfully.
 
-   bool CreateAndShow(const std::wstring& title,
 
-                      const Point& origin,
 
-                      const Size& size);
 
-   // Release OS resources associated with window.
 
-   void Destroy();
 
-   // Inserts |content| into the window tree.
 
-   void SetChildContent(HWND content);
 
-   // Returns the backing Window handle to enable clients to set icon and other
 
-   // window properties. Returns nullptr if the window has been destroyed.
 
-   HWND GetHandle();
 
-   // If true, closing this window will quit the application.
 
-   void SetQuitOnClose(bool quit_on_close);
 
-   // Return a RECT representing the bounds of the current client area.
 
-   RECT GetClientArea();
 
-  protected:
 
-   // Processes and route salient window messages for mouse handling,
 
-   // size change and DPI. Delegates handling of these to member overloads that
 
-   // inheriting classes can handle.
 
-   virtual LRESULT MessageHandler(HWND window,
 
-                                  UINT const message,
 
-                                  WPARAM const wparam,
 
-                                  LPARAM const lparam) noexcept;
 
-   // Called when CreateAndShow is called, allowing subclass window-related
 
-   // setup. Subclasses should return false if setup fails.
 
-   virtual bool OnCreate();
 
-   // Called when Destroy is called.
 
-   virtual void OnDestroy();
 
-  private:
 
-   friend class WindowClassRegistrar;
 
-   // OS callback called by message pump. Handles the WM_NCCREATE message which
 
-   // is passed when the non-client area is being created and enables automatic
 
-   // non-client DPI scaling so that the non-client area automatically
 
-   // responsponds to changes in DPI. All other messages are handled by
 
-   // MessageHandler.
 
-   static LRESULT CALLBACK WndProc(HWND const window,
 
-                                   UINT const message,
 
-                                   WPARAM const wparam,
 
-                                   LPARAM const lparam) noexcept;
 
-   // Retrieves a class instance pointer for |window|
 
-   static Win32Window* GetThisFromHandle(HWND const window) noexcept;
 
-   bool quit_on_close_ = false;
 
-   // window handle for top level window.
 
-   HWND window_handle_ = nullptr;
 
-   // window handle for hosted content.
 
-   HWND child_content_ = nullptr;
 
- };
 
- #endif  // RUNNER_WIN32_WINDOW_H_
 
 
  |