/** * Looking Glass * Copyright © 2017-2026 The Looking Glass Authors * https://looking-glass.io * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., 59 * Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #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::unique_ptr m_modeDelete; std::unique_ptr m_autosizeGroup; std::unique_ptr m_defRefreshLabel; std::unique_ptr m_defRefresh; std::unique_ptr m_defRefreshHz; std::function m_onDestroy; double m_scale; Microsoft::WRL::Wrappers::HandleT m_font; CRegistrySettings m_settings; std::optional> m_modes; std::optional m_defaultRefresh; void updateFont(); void updateModeList(); void onModeListSelectChange(); 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); } };