project64/Source/Project64/User Interface/Settings Config.h

46 lines
1.4 KiB
C++

#pragma once
#include <commctrl.h>
class CConfigSettingSection;
class CSettingsPage;
class CSettingConfig :
public CDialogImpl<CSettingConfig>
{
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<CConfigSettingSection *> SETTING_SECTIONS;
CTreeViewCtrl m_PagesTreeList;
SETTING_SECTIONS m_Sections;
CSettingsPage * m_CurrentPage, * m_GeneralOptionsPage, * m_AdvancedPage;
bool m_GameConfig;
};