144 lines
4 KiB
C
144 lines
4 KiB
C
|
/*****************************************************************************\
|
||
|
FILE: config.h
|
||
|
|
||
|
DESCRIPTION:
|
||
|
The class will handle the user's configuration state. It will also
|
||
|
display the Screen Saver's configuration dialog to allow the user to change
|
||
|
these settings.
|
||
|
|
||
|
BryanSt 12/18/2000
|
||
|
Copyright (C) Microsoft Corp 2000-2001. All rights reserved.
|
||
|
\*****************************************************************************/
|
||
|
|
||
|
#ifndef CONFIG_H
|
||
|
#define CONFIG_H
|
||
|
|
||
|
class CConfig;
|
||
|
|
||
|
#include "util.h"
|
||
|
#include "main.h"
|
||
|
#include "resource.h"
|
||
|
|
||
|
#define NUM_BOOL_SETTINGS 1
|
||
|
#define NUM_DWORD_SETTINGS 5
|
||
|
#define NUM_BOOL_FOLDERS 4
|
||
|
|
||
|
#define MAX_QUALITY 8
|
||
|
#define MAX_WALK 6
|
||
|
#define MAX_VIEWTIME 30
|
||
|
|
||
|
// Args for CConfig::GetFolderOn()
|
||
|
#define CONFIG_FOLDER_MYPICTS 0
|
||
|
#define CONFIG_FOLDER_COMMONPICTS 1
|
||
|
#define CONFIG_FOLDER_WINPICTS 2
|
||
|
#define CONFIG_FOLDER_OTHER 3
|
||
|
|
||
|
// Args for CConfig::GetDWORDSetting()
|
||
|
#define CONFIG_DWORD_RENDERQUALITY 0
|
||
|
#define CONFIG_DWORD_REALTIMEMODE 1
|
||
|
#define CONFIG_DWORD_QUALITY_SLIDER 2
|
||
|
#define CONFIG_DWORD_SPEED_SLIDER 3
|
||
|
#define CONFIG_DWORD_VIEWPAINTINGTIME 4
|
||
|
|
||
|
#define DEFAULT_QUALITYSLIDER 2
|
||
|
#define DEFAULT_VIEWTIMESLIDER 7
|
||
|
#define DEFAULT_SPEEDSLIDER 2
|
||
|
#define DEFAULT_WALKSPEED 2
|
||
|
#define DEFAULT_RENDERQUALITY 1
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
LPCTSTR pszRegValue;
|
||
|
} QUALITY_SETTING;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
LPCTSTR pszRegValue;
|
||
|
BOOL fDefaultToOn;
|
||
|
} FOLDER_SETTING;
|
||
|
|
||
|
|
||
|
extern CConfig * g_pConfig; // The configuration settings the user wants to use.
|
||
|
extern QUALITY_SETTING s_QualitySettings[NUM_BOOL_SETTINGS];
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
class CConfig
|
||
|
{
|
||
|
public:
|
||
|
// Member Functions
|
||
|
virtual BOOL GetBoolSetting(UINT nSetting);
|
||
|
virtual DWORD GetDWORDSetting(UINT nSetting);
|
||
|
virtual BOOL GetFolderOn(UINT nSetting);
|
||
|
virtual HRESULT GetOtherDir(LPTSTR pszPath, DWORD cchSize);
|
||
|
virtual HRESULT GetTexturePath(int nTextureIndex, DWORD * pdwScale, LPTSTR pszPath, DWORD cchSize);
|
||
|
|
||
|
virtual HRESULT DisplayConfigDialog(HWND hwndParent);
|
||
|
|
||
|
HRESULT LoadStatePublic(void) { return _LoadState(); }
|
||
|
|
||
|
CConfig(CMSLogoDXScreenSaver * pMain);
|
||
|
~CConfig();
|
||
|
|
||
|
private:
|
||
|
// Helper Functions
|
||
|
HRESULT _LoadState(void);
|
||
|
HRESULT _SaveState(void);
|
||
|
HRESULT _GetState(void);
|
||
|
|
||
|
HRESULT _UpdateViewTimeSelection(void);
|
||
|
HRESULT _OnBrowseForFolder(void);
|
||
|
HRESULT _GetStateFromUI(void);
|
||
|
HRESULT _LoadQualitySliderValues(void);
|
||
|
BOOL _IsDialogDataValid(void);
|
||
|
|
||
|
HRESULT _OnInitDlg(HWND hDlg);
|
||
|
HRESULT _OnDestroy(HWND hDlg);
|
||
|
HRESULT _OnCommand(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
||
|
|
||
|
INT_PTR _ConfigDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
||
|
|
||
|
// Advanced Dialog
|
||
|
HRESULT DisplayAdvancedDialog(HWND hwndParent);
|
||
|
INT_PTR _AdvDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
||
|
HRESULT _OnAdvInitDlg(HWND hDlg);
|
||
|
HRESULT _OnAdvDestroy(HWND hDlg);
|
||
|
HRESULT _OnAdvCommand(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
||
|
HRESULT _GetAdvState(void);
|
||
|
|
||
|
HRESULT _OnEnableCustomTexture(int nIndex, BOOL fEnable);
|
||
|
|
||
|
|
||
|
static INT_PTR CALLBACK AdvDlgProc(HWND hDlg, UINT uMessage, WPARAM wParam, LPARAM lParam);
|
||
|
static INT_PTR CALLBACK ConfigDlgProc(HWND hDlg, UINT uMessage, WPARAM wParam, LPARAM lParam);
|
||
|
|
||
|
// Member Variables
|
||
|
HKEY m_hkeyCurrentUser; // Cached Key
|
||
|
BOOL m_fSettings[NUM_BOOL_SETTINGS];
|
||
|
DWORD m_dwSettings[NUM_DWORD_SETTINGS];
|
||
|
BOOL m_fFolders[NUM_BOOL_FOLDERS];
|
||
|
TCHAR m_szOther[MAX_PATH];
|
||
|
BOOL m_fLoaded;
|
||
|
HWND m_hDlg;
|
||
|
HWND m_hDlgAdvanced;
|
||
|
LPWSTR m_pszCustomPaths[MAX_CUSTOMTEXTURES];
|
||
|
DWORD m_dwCustomScale[MAX_CUSTOMTEXTURES];
|
||
|
|
||
|
CMSLogoDXScreenSaver * m_pMain; // Weak reference
|
||
|
|
||
|
// Advanced Dialog
|
||
|
BOOL m_fAdvSettings[NUM_BOOL_SETTINGS];
|
||
|
DWORD m_dwAdvSettings[NUM_DWORD_SETTINGS];
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
#endif // CONFIG_H
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|