// Application class header namespace watchfuleye { class Application { using Clock = std::chrono::high_resolution_clock; using TimePoint = std::chrono::time_point; using Duration = std::chrono::duration>; using Seconds = int; public: Application(const char* appName, const char* appVersion, unsigned int maximumMinutes, const char* driveToDetect); void run(); ~Application(); private: static LRESULT CALLBACK wndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); void sizeWindow(const HWND& hWnd); void createTrayIcon(); void queryThreadFunction(); std::string m_appName, m_appVersion; HWND m_window; bool m_running; // Is the application running? bool m_active; // Is the timer ticking? bool m_overTime; // Are we out of time? unsigned int m_maxMinutes; const char* m_drive; TimePoint m_startTime; UINT m_taskbarCreatedMessage; HRGN m_region; HFONT m_timeFont, m_lowerFont; HBRUSH m_greenBrush, m_yellowBrush, m_redBrush; }; }