add veilid flutter plugin skeleton
This commit is contained in:
		
							
								
								
									
										98
									
								
								veilid-flutter/example/windows/runner/win32_window.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								veilid-flutter/example/windows/runner/win32_window.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,98 @@ | ||||
| #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_ | ||||
		Reference in New Issue
	
	Block a user