#pragma once class CConfigSettingSection; class CSettingsPage; class CSettingConfig : public CDialogImpl { public: BEGIN_MSG_MAP_EX(CSettingConfig) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) COMMAND_CODE_HANDLER(BN_CLICKED,OnClicked) NOTIFY_HANDLER_EX(IDC_PAGELIST, TVN_SELCHANGED, OnPageListItemChanged) MESSAGE_HANDLER_EX(PSM_CHANGED,OnSettingPageChanged) REFLECT_NOTIFICATIONS() END_MSG_MAP() enum { IDD = IDD_Settings_Config }; LRESULT OnInitDialog ( UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); LRESULT OnClicked(WORD wNotifyCode, WORD wID, HWND /*hWndCtl*/, BOOL& bHandled); LRESULT OnPageListItemChanged(NMHDR* phdr); LRESULT OnSettingPageChanged ( UINT /*uMsg*/, WPARAM wPage, LPARAM /*lParam*/); public: CSettingConfig ( bool bJustGameSetting = false ); ~CSettingConfig ( void ); void Display ( void * ParentWindow ); void UpdateAdvanced ( bool AdvancedMode ); private: bool UpdateAdvanced ( bool AdvancedMode, HTREEITEM hItem ); void ApplySettings ( bool UpdateScreen ); void BoldChangedPages ( HTREEITEM hItem ); typedef std::list SETTING_SECTIONS; CTreeViewCtrl m_PagesTreeList; SETTING_SECTIONS m_Sections; CSettingsPage * m_CurrentPage, * m_GeneralOptionsPage, * m_AdvancedPage; bool m_GameConfig; };