📄 d3dsettings.cpp
字号:
//-----------------------------------------------------------------------------
// File: D3DSettings.cpp
//
// Desc: Settings class and change-settings dialog class for the Direct3D
// samples framework library.
//-----------------------------------------------------------------------------
#define STRICT
#include <windows.h>
#include <windowsx.h>
#include <tchar.h>
#include <stdio.h>
#include "D3DUtil.h"
#include "DXUtil.h"
#include "../../Main/QHeader.h"
#include "DX8Enumeration.h"
#include "D3DSettings.h"
#include "resource.h"
CD3DSettingsDialog* s_pSettingsDialog = NULL;
//-----------------------------------------------------------------------------
// Name : D3DModeTypeToString(D3DModeInfo mode)
// Desc : Returns the string for the given D3DModeInfo
//-----------------------------------------------------------------------------
TCHAR* D3DModeTypeToString(D3DModeInfo mode)
{
static TCHAR buf[64];
sprintf(buf,"%d*%d",mode.Width,mode.Height);
return buf;
}
//-----------------------------------------------------------------------------
// Name: D3DDevTypeToString
// Desc: Returns the string for the given D3DDEVTYPE.
//-----------------------------------------------------------------------------
TCHAR* D3DDevTypeToString(D3DDEVTYPE devType)
{
switch (devType)
{
case D3DDEVTYPE_HAL: return TEXT("D3DDEVTYPE_HAL");
case D3DDEVTYPE_SW: return TEXT("D3DDEVTYPE_SW");
case D3DDEVTYPE_REF: return TEXT("D3DDEVTYPE_REF");
default: return TEXT("Unknown devType");
}
}
//-----------------------------------------------------------------------------
// Name: MultisampleTypeToString
// Desc: Returns the string for the given D3DMULTISAMPLE_TYPE.
//-----------------------------------------------------------------------------
TCHAR* MultisampleTypeToString(D3DMULTISAMPLE_TYPE MultiSampleType)
{
switch (MultiSampleType)
{
case D3DMULTISAMPLE_NONE: return TEXT("D3DMULTISAMPLE_NONE");
case D3DMULTISAMPLE_2_SAMPLES: return TEXT("D3DMULTISAMPLE_2_SAMPLES");
case D3DMULTISAMPLE_3_SAMPLES: return TEXT("D3DMULTISAMPLE_3_SAMPLES");
case D3DMULTISAMPLE_4_SAMPLES: return TEXT("D3DMULTISAMPLE_4_SAMPLES");
case D3DMULTISAMPLE_5_SAMPLES: return TEXT("D3DMULTISAMPLE_5_SAMPLES");
case D3DMULTISAMPLE_6_SAMPLES: return TEXT("D3DMULTISAMPLE_6_SAMPLES");
case D3DMULTISAMPLE_7_SAMPLES: return TEXT("D3DMULTISAMPLE_7_SAMPLES");
case D3DMULTISAMPLE_8_SAMPLES: return TEXT("D3DMULTISAMPLE_8_SAMPLES");
case D3DMULTISAMPLE_9_SAMPLES: return TEXT("D3DMULTISAMPLE_9_SAMPLES");
case D3DMULTISAMPLE_10_SAMPLES: return TEXT("D3DMULTISAMPLE_10_SAMPLES");
case D3DMULTISAMPLE_11_SAMPLES: return TEXT("D3DMULTISAMPLE_11_SAMPLES");
case D3DMULTISAMPLE_12_SAMPLES: return TEXT("D3DMULTISAMPLE_12_SAMPLES");
case D3DMULTISAMPLE_13_SAMPLES: return TEXT("D3DMULTISAMPLE_13_SAMPLES");
case D3DMULTISAMPLE_14_SAMPLES: return TEXT("D3DMULTISAMPLE_14_SAMPLES");
case D3DMULTISAMPLE_15_SAMPLES: return TEXT("D3DMULTISAMPLE_15_SAMPLES");
case D3DMULTISAMPLE_16_SAMPLES: return TEXT("D3DMULTISAMPLE_16_SAMPLES");
default: return TEXT("Unknown Multisample Type");
}
}
//-----------------------------------------------------------------------------
// Name: VertexProcessingTypeToString
// Desc: Returns the string for the given VertexProcessingType.
//-----------------------------------------------------------------------------
/*
TCHAR* VertexProcessingTypeToString(VertexProcessingType vpt)
{
switch (vpt)
{
case SOFTWARE_VP: return TEXT("SOFTWARE_VP");
case MIXED_VP: return TEXT("MIXED_VP");
case HARDWARE_VP: return TEXT("HARDWARE_VP");
case PURE_HARDWARE_VP: return TEXT("PURE_HARDWARE_VP");
default: return TEXT("Unknown VertexProcessingType");
}
}
*/
//-----------------------------------------------------------------------------
// Name: PresentIntervalToString
// Desc: Returns the string for the given present interval.
//-----------------------------------------------------------------------------
TCHAR* PresentIntervalToString( UINT pi )
{
switch( pi )
{
case D3DPRESENT_INTERVAL_IMMEDIATE: return TEXT("D3DPRESENT_INTERVAL_IMMEDIATE");
case D3DPRESENT_INTERVAL_DEFAULT: return TEXT("D3DPRESENT_INTERVAL_DEFAULT");
case D3DPRESENT_INTERVAL_ONE: return TEXT("D3DPRESENT_INTERVAL_ONE");
case D3DPRESENT_INTERVAL_TWO: return TEXT("D3DPRESENT_INTERVAL_TWO");
case D3DPRESENT_INTERVAL_THREE: return TEXT("D3DPRESENT_INTERVAL_THREE");
case D3DPRESENT_INTERVAL_FOUR: return TEXT("D3DPRESENT_INTERVAL_FOUR");
default: return TEXT("Unknown PresentInterval");
}
}
TCHAR* VPTypeToString( UINT vp )
{
switch( vp )
{
case D3DCREATE_SOFTWARE_VERTEXPROCESSING: return TEXT("SOFTWARE_VERTEXPROCESSING");
case D3DCREATE_HARDWARE_VERTEXPROCESSING: return TEXT("HARDWARE_VERTEXPROCESSING");
case D3DCREATE_MIXED_VERTEXPROCESSING: return TEXT("MIXED_VERTEXPROCESSING");
case D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_PUREDEVICE:
return TEXT("HARDWARE_VERTEXPROCESSING & PUREDEVICE");
default: return TEXT("Unknown VertexProcessing");
}
}
//-----------------------------------------------------------------------------
// Name: DialogProcHelper
// Desc:
//-----------------------------------------------------------------------------
INT_PTR CALLBACK DialogProcHelper( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam )
{
return s_pSettingsDialog->DialogProc( hDlg, msg, wParam, lParam );
}
//-----------------------------------------------------------------------------
// Name: CD3DSettingsDialog constructor
// Desc:
//-----------------------------------------------------------------------------
CD3DSettingsDialog::CD3DSettingsDialog( DX8Enumeration* pEnumeration )
{
s_pSettingsDialog = this;
m_pEnumeration = pEnumeration;
}
//-----------------------------------------------------------------------------
// Name: ComboBoxAdd
// Desc: Adds an entry to the combo box.
//-----------------------------------------------------------------------------
void CD3DSettingsDialog::ComboBoxAdd( Int32 id, TCHAR* pstrDesc )
{
HWND hwndCtrl = GetDlgItem( m_hDlg, id );
DWORD dwItem = ComboBox_AddString( hwndCtrl, pstrDesc );
}
//-----------------------------------------------------------------------------
// Name: ComboBoxSelectIndex
// Desc: Selects an entry in the combo box.
//-----------------------------------------------------------------------------
void CD3DSettingsDialog::ComboBoxSelectIndex( Int32 id, Int32 index )
{
HWND hwndCtrl = GetDlgItem( m_hDlg, id );
ComboBox_SetCurSel( hwndCtrl, index );
PostMessage( m_hDlg, WM_COMMAND, MAKEWPARAM( id, CBN_SELCHANGE ),
(LPARAM)hwndCtrl );
}
//-----------------------------------------------------------------------------
// Name: ComboBoxSelected
// Desc: Returns the data for the selected entry in the combo box.
//-----------------------------------------------------------------------------
Int32 CD3DSettingsDialog::ComboBoxSelected( Int32 id )
{
HWND hwndCtrl = GetDlgItem( m_hDlg, id );
Int32 index = ComboBox_GetCurSel( hwndCtrl );
return index;
}
//-----------------------------------------------------------------------------
// Name: ComboBoxSomethingSelected
// Desc: Returns whether any entry in the combo box is selected. This is
// more useful than ComboBoxSelected() when you need to distinguish
// between having no item selected vs. having an item selected whose
// itemData is NULL.
//-----------------------------------------------------------------------------
Bool CD3DSettingsDialog::ComboBoxSomethingSelected( Int32 id )
{
HWND hwndCtrl = GetDlgItem( m_hDlg, id );
Int32 index = ComboBox_GetCurSel( hwndCtrl );
return ( index >= 0 );
}
//-----------------------------------------------------------------------------
// Name: ComboBoxCount
// Desc: Returns the number of entries in the combo box.
//-----------------------------------------------------------------------------
UINT CD3DSettingsDialog::ComboBoxCount( Int32 id )
{
HWND hwndCtrl = GetDlgItem( m_hDlg, id );
return ComboBox_GetCount( hwndCtrl );
}
//-----------------------------------------------------------------------------
// Name: ComboBoxClear
// Desc: Clears the entries in the combo box.
//-----------------------------------------------------------------------------
void CD3DSettingsDialog::ComboBoxClear( Int32 id )
{
HWND hwndCtrl = GetDlgItem( m_hDlg, id );
ComboBox_ResetContent( hwndCtrl );
}
//-----------------------------------------------------------------------------
// Name: ComboBoxContainsText
// Desc: Returns whether the combo box contains the given text.
//-----------------------------------------------------------------------------
Bool CD3DSettingsDialog::ComboBoxContainsText( Int32 id, TCHAR* pstrText )
{
TCHAR strItem[200];
HWND hwndCtrl = GetDlgItem( m_hDlg, id );
UINT count = ComboBoxCount( id );
for( UINT iItem = 0; iItem < count; iItem++ )
{
if( ComboBox_GetLBTextLen( hwndCtrl, iItem ) >= 200 )
continue; // shouldn't happen, but don't overwrite buffer if it does
ComboBox_GetLBText( hwndCtrl, iItem, strItem );
if( lstrcmp( strItem, pstrText ) == 0 )
return true;
}
return false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -