Add MoneyMgr project
This commit is contained in:
		
							
								
								
									
										102
									
								
								moneymgr_mobile/windows/runner/win32_window.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								moneymgr_mobile/windows/runner/win32_window.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,102 @@
 | 
			
		||||
#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 a win32 window with |title| that is positioned and sized 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 this function will scale the inputted width and height as
 | 
			
		||||
  // as appropriate for the default monitor. The window is invisible until
 | 
			
		||||
  // |Show| is called. Returns true if the window was created successfully.
 | 
			
		||||
  bool Create(const std::wstring& title, const Point& origin, const Size& size);
 | 
			
		||||
 | 
			
		||||
  // Show the current window. Returns true if the window was successfully shown.
 | 
			
		||||
  bool Show();
 | 
			
		||||
 | 
			
		||||
  // 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
 | 
			
		||||
  // responds 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;
 | 
			
		||||
 | 
			
		||||
  // Update the window frame's theme to match the system theme.
 | 
			
		||||
  static void UpdateTheme(HWND const window);
 | 
			
		||||
 | 
			
		||||
  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