#pragma once #include "CWindow.h" #include "CStaticWidget.h" #include "CRegistrySettings.h" #include #include #include #include #include "UIHelpers.h" class CListBox; class CGroupBox; class CEditWidget; class CButton; class CConfigWindow : public CWindow { static ATOM s_atom; std::unique_ptr m_version; std::unique_ptr m_modeGroup; std::unique_ptr m_modeBox; std::unique_ptr m_widthLabel; std::unique_ptr m_heightLabel; std::unique_ptr m_refreshLabel; std::unique_ptr m_modeWidth; std::unique_ptr m_modeHeight; std::unique_ptr m_modeRefresh; std::unique_ptr m_modeUpdate; std::function m_onDestroy; double m_scale; Microsoft::WRL::Wrappers::HandleT m_font; CRegistrySettings m_settings; std::optional> m_modes; void updateFont(); virtual LRESULT handleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) override; virtual LRESULT onCreate() override; virtual LRESULT onFinal() override; LRESULT onResize(DWORD width, DWORD height); LRESULT onCommand(WORD id, WORD code, HWND hwnd); public: CConfigWindow(); static bool registerClass(); void onDestroy(std::function func) { m_onDestroy = std::move(func); } };