1 //--------------------------------------------------------------------------------------
2 // File: DXUTSettingsDlg.cpp
3 //
4 // Copyright (c) Microsoft Corporation. All rights reserved
5 //--------------------------------------------------------------------------------------
6 #pragma once
7 #ifndef DXUT_SETTINGS_H
8 #define DXUT_SETTINGS_H
9 
10 
11 //--------------------------------------------------------------------------------------
12 // Control IDs
13 //--------------------------------------------------------------------------------------
14 #define DXUTSETTINGSDLG_STATIC                  -1
15 #define DXUTSETTINGSDLG_OK                      1
16 #define DXUTSETTINGSDLG_CANCEL                  2
17 #define DXUTSETTINGSDLG_ADAPTER                 3
18 #define DXUTSETTINGSDLG_DEVICE_TYPE             4
19 #define DXUTSETTINGSDLG_WINDOWED                5
20 #define DXUTSETTINGSDLG_FULLSCREEN              6
21 #define DXUTSETTINGSDLG_ADAPTER_FORMAT          7
22 #define DXUTSETTINGSDLG_ADAPTER_FORMAT_LABEL    8
23 #define DXUTSETTINGSDLG_RESOLUTION              9
24 #define DXUTSETTINGSDLG_RESOLUTION_LABEL        10
25 #define DXUTSETTINGSDLG_REFRESH_RATE            11
26 #define DXUTSETTINGSDLG_REFRESH_RATE_LABEL      12
27 #define DXUTSETTINGSDLG_BACK_BUFFER_FORMAT      13
28 #define DXUTSETTINGSDLG_DEPTH_STENCIL           14
29 #define DXUTSETTINGSDLG_MULTISAMPLE_TYPE        15
30 #define DXUTSETTINGSDLG_MULTISAMPLE_QUALITY     16
31 #define DXUTSETTINGSDLG_VERTEX_PROCESSING       17
32 #define DXUTSETTINGSDLG_PRESENT_INTERVAL        18
33 #define DXUTSETTINGSDLG_DEVICECLIP              19
34 #define DXUTSETTINGSDLG_RESOLUTION_SHOW_ALL     20
35 #define DXUTSETTINGSDLG_WINDOWED_GROUP          0x0100
36 
37 
38 //--------------------------------------------------------------------------------------
39 // Dialog for selection of device settings
40 // Use DXUTGetSettingsDialog() to access global instance
41 // To control the contents of the dialog, use the CD3DEnumeration class.
42 //--------------------------------------------------------------------------------------
43 class CD3DSettingsDlg
44 {
45 public:
46     CD3DSettingsDlg();
47     ~CD3DSettingsDlg();
48 
49     void Init( CDXUTDialogResourceManager* pManager );
50     void Init( CDXUTDialogResourceManager* pManager, LPCWSTR szControlTextureFileName );
51     void Init( CDXUTDialogResourceManager* pManager, LPCWSTR pszControlTextureResourcename, HMODULE hModule);
52 
53     HRESULT OnCreateDevice( IDirect3DDevice9* pd3dDevice );
54     HRESULT Refresh();
55     HRESULT OnResetDevice();
56     HRESULT OnLostDevice();
57     HRESULT OnRender( float fElapsedTime );
58     HRESULT OnDestroyDevice();
59 
GetDialogControl()60     CDXUTDialog* GetDialogControl() { return &m_Dialog; }
IsActive()61     bool IsActive() { return m_bActive; }
SetActive(bool bActive)62     void SetActive( bool bActive ) { m_bActive = bActive; if( bActive ) Refresh(); }
63 
64     LRESULT MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
65 
66 protected:
67     friend CD3DSettingsDlg* DXUTGetSettingsDialog();
68 
69     void CreateControls();
70     HRESULT SetDeviceSettingsFromUI();
71 
72     void OnEvent( UINT nEvent, int nControlID, CDXUTControl* pControl );
73     static void WINAPI StaticOnEvent( UINT nEvent, int nControlID, CDXUTControl* pControl, void* pUserData );
74 
75     CD3DEnumAdapterInfo* GetCurrentAdapterInfo();
76     CD3DEnumDeviceInfo* GetCurrentDeviceInfo();
77     CD3DEnumDeviceSettingsCombo* GetCurrentDeviceSettingsCombo();
78 
79     void AddAdapter( const WCHAR* strDescription, UINT iAdapter );
80     UINT GetSelectedAdapter();
81 
82     void AddDeviceType( D3DDEVTYPE devType );
83     D3DDEVTYPE GetSelectedDeviceType();
84 
85     void SetWindowed( bool bWindowed );
86     bool IsWindowed();
87 
88     void AddAdapterFormat( D3DFORMAT format );
89     D3DFORMAT GetSelectedAdapterFormat();
90 
91     void AddResolution( DWORD dwWidth, DWORD dwHeight );
92     void GetSelectedResolution( DWORD* pdwWidth, DWORD* pdwHeight );
93 
94     void AddRefreshRate( DWORD dwRate );
95     DWORD GetSelectedRefreshRate();
96 
97     void AddBackBufferFormat( D3DFORMAT format );
98     D3DFORMAT GetSelectedBackBufferFormat();
99 
100     void AddDepthStencilBufferFormat( D3DFORMAT format );
101     D3DFORMAT GetSelectedDepthStencilBufferFormat();
102 
103     void AddMultisampleType( D3DMULTISAMPLE_TYPE type );
104     D3DMULTISAMPLE_TYPE GetSelectedMultisampleType();
105 
106     void AddMultisampleQuality( DWORD dwQuality );
107     DWORD GetSelectedMultisampleQuality();
108 
109     void AddVertexProcessingType( DWORD dwType );
110     DWORD GetSelectedVertexProcessingType();
111 
112     DWORD GetSelectedPresentInterval();
113 
114     void SetDeviceClip( bool bDeviceClip );
115     bool IsDeviceClip();
116 
117     HRESULT OnAdapterChanged();
118     HRESULT OnDeviceTypeChanged();
119     HRESULT OnWindowedFullScreenChanged();
120     HRESULT OnAdapterFormatChanged();
121     HRESULT OnResolutionChanged();
122     HRESULT OnRefreshRateChanged();
123     HRESULT OnBackBufferFormatChanged();
124     HRESULT OnDepthStencilBufferFormatChanged();
125     HRESULT OnMultisampleTypeChanged();
126     HRESULT OnMultisampleQualityChanged();
127     HRESULT OnVertexProcessingChanged();
128     HRESULT OnPresentIntervalChanged();
129     HRESULT OnDeviceClipChanged();
130 
131     IDirect3DStateBlock9* m_pStateBlock;
132     CDXUTDialog m_Dialog;
133     bool m_bActive;
134 };
135 
136 
137 CD3DSettingsDlg* DXUTGetSettingsDialog();
138 
139 
140 
141 #endif
142 
143