📄 dxutgui.cpp
字号:
{
CDXUTControl* pControl = m_Controls.GetAt(i);
if( pControl == NULL )
{
continue;
}
// We only return the current control if it is visible
// and enabled. Because GetControlAtPoint() is used to do mouse
// hittest, it makes sense to perform this filtering.
if( pControl->ContainsPoint( pt ) && pControl->GetEnabled() && pControl->GetVisible() )
{
return pControl;
}
}
return NULL;
}
//--------------------------------------------------------------------------------------
bool CDXUTDialog::GetControlEnabled( int ID )
{
CDXUTControl* pControl = GetControl( ID );
if( pControl == NULL )
return false;
return pControl->GetEnabled();
}
//--------------------------------------------------------------------------------------
void CDXUTDialog::SetControlEnabled( int ID, bool bEnabled )
{
CDXUTControl* pControl = GetControl( ID );
if( pControl == NULL )
return;
pControl->SetEnabled( bEnabled );
}
//--------------------------------------------------------------------------------------
void CDXUTDialog::OnMouseUp( POINT pt )
{
s_pControlPressed = NULL;
m_pControlMouseOver = NULL;
}
//--------------------------------------------------------------------------------------
void CDXUTDialog::OnMouseMove( POINT pt )
{
// Figure out which control the mouse is over now
CDXUTControl* pControl = GetControlAtPoint( pt );
// If the mouse is still over the same control, nothing needs to be done
if( pControl == m_pControlMouseOver )
return;
// Handle mouse leaving the old control
if( m_pControlMouseOver )
m_pControlMouseOver->OnMouseLeave();
// Handle mouse entering the new control
m_pControlMouseOver = pControl;
if( pControl != NULL )
m_pControlMouseOver->OnMouseEnter();
}
//--------------------------------------------------------------------------------------
HRESULT CDXUTDialog::SetDefaultElement( UINT nControlType, UINT iElement, CDXUTElement* pElement )
{
// If this Element type already exist in the list, simply update the stored Element
for( int i=0; i < m_DefaultElements.GetSize(); i++ )
{
DXUTElementHolder* pElementHolder = m_DefaultElements.GetAt( i );
if( pElementHolder->nControlType == nControlType &&
pElementHolder->iElement == iElement )
{
pElementHolder->Element = *pElement;
return S_OK;
}
}
// Otherwise, add a new entry
DXUTElementHolder* pNewHolder;
pNewHolder = new DXUTElementHolder;
if( pNewHolder == NULL )
return E_OUTOFMEMORY;
pNewHolder->nControlType = nControlType;
pNewHolder->iElement = iElement;
pNewHolder->Element = *pElement;
m_DefaultElements.Add( pNewHolder );
return S_OK;
}
//--------------------------------------------------------------------------------------
CDXUTElement* CDXUTDialog::GetDefaultElement( UINT nControlType, UINT iElement )
{
for( int i=0; i < m_DefaultElements.GetSize(); i++ )
{
DXUTElementHolder* pElementHolder = m_DefaultElements.GetAt( i );
if( pElementHolder->nControlType == nControlType &&
pElementHolder->iElement == iElement )
{
return &pElementHolder->Element;
}
}
return NULL;
}
//--------------------------------------------------------------------------------------
HRESULT CDXUTDialog::AddStatic( int ID, LPCWSTR strText, int x, int y, int width, int height, bool bIsDefault, CDXUTStatic** ppCreated )
{
HRESULT hr = S_OK;
CDXUTStatic* pStatic = new CDXUTStatic( this );
if( ppCreated != NULL )
*ppCreated = pStatic;
if( pStatic == NULL )
return E_OUTOFMEMORY;
hr = AddControl( pStatic );
if( FAILED(hr) )
return hr;
// Set the ID and list index
pStatic->SetID( ID );
pStatic->SetText( strText );
pStatic->SetLocation( x, y );
pStatic->SetSize( width, height );
pStatic->m_bIsDefault = bIsDefault;
return S_OK;
}
//--------------------------------------------------------------------------------------
HRESULT CDXUTDialog::AddButton( int ID, LPCWSTR strText, int x, int y, int width, int height, UINT nHotkey, bool bIsDefault, CDXUTButton** ppCreated )
{
HRESULT hr = S_OK;
CDXUTButton* pButton = new CDXUTButton( this );
if( ppCreated != NULL )
*ppCreated = pButton;
if( pButton == NULL )
return E_OUTOFMEMORY;
hr = AddControl( pButton );
if( FAILED(hr) )
return hr;
// Set the ID and list index
pButton->SetID( ID );
pButton->SetText( strText );
pButton->SetLocation( x, y );
pButton->SetSize( width, height );
pButton->SetHotkey( nHotkey );
pButton->m_bIsDefault = bIsDefault;
return S_OK;
}
//--------------------------------------------------------------------------------------
HRESULT CDXUTDialog::AddCheckBox( int ID, LPCWSTR strText, int x, int y, int width, int height, bool bChecked, UINT nHotkey, bool bIsDefault, CDXUTCheckBox** ppCreated )
{
HRESULT hr = S_OK;
CDXUTCheckBox* pCheckBox = new CDXUTCheckBox( this );
if( ppCreated != NULL )
*ppCreated = pCheckBox;
if( pCheckBox == NULL )
return E_OUTOFMEMORY;
hr = AddControl( pCheckBox );
if( FAILED(hr) )
return hr;
// Set the ID and list index
pCheckBox->SetID( ID );
pCheckBox->SetText( strText );
pCheckBox->SetLocation( x, y );
pCheckBox->SetSize( width, height );
pCheckBox->SetHotkey( nHotkey );
pCheckBox->m_bIsDefault = bIsDefault;
pCheckBox->SetChecked( bChecked );
return S_OK;
}
//--------------------------------------------------------------------------------------
HRESULT CDXUTDialog::AddRadioButton( int ID, UINT nButtonGroup, LPCWSTR strText, int x, int y, int width, int height, bool bChecked, UINT nHotkey, bool bIsDefault, CDXUTRadioButton** ppCreated )
{
HRESULT hr = S_OK;
CDXUTRadioButton* pRadioButton = new CDXUTRadioButton( this );
if( ppCreated != NULL )
*ppCreated = pRadioButton;
if( pRadioButton == NULL )
return E_OUTOFMEMORY;
hr = AddControl( pRadioButton );
if( FAILED(hr) )
return hr;
// Set the ID and list index
pRadioButton->SetID( ID );
pRadioButton->SetText( strText );
pRadioButton->SetButtonGroup( nButtonGroup );
pRadioButton->SetLocation( x, y );
pRadioButton->SetSize( width, height );
pRadioButton->SetHotkey( nHotkey );
pRadioButton->SetChecked( bChecked );
pRadioButton->m_bIsDefault = bIsDefault;
pRadioButton->SetChecked( bChecked );
return S_OK;
}
//--------------------------------------------------------------------------------------
HRESULT CDXUTDialog::AddComboBox( int ID, int x, int y, int width, int height, UINT nHotkey, bool bIsDefault, CDXUTComboBox** ppCreated )
{
HRESULT hr = S_OK;
CDXUTComboBox* pComboBox = new CDXUTComboBox( this );
if( ppCreated != NULL )
*ppCreated = pComboBox;
if( pComboBox == NULL )
return E_OUTOFMEMORY;
hr = AddControl( pComboBox );
if( FAILED(hr) )
return hr;
// Set the ID and list index
pComboBox->SetID( ID );
pComboBox->SetLocation( x, y );
pComboBox->SetSize( width, height );
pComboBox->SetHotkey( nHotkey );
pComboBox->m_bIsDefault = bIsDefault;
return S_OK;
}
//--------------------------------------------------------------------------------------
HRESULT CDXUTDialog::AddSlider( int ID, int x, int y, int width, int height, int min, int max, int value, bool bIsDefault, CDXUTSlider** ppCreated )
{
HRESULT hr = S_OK;
CDXUTSlider* pSlider = new CDXUTSlider( this );
if( ppCreated != NULL )
*ppCreated = pSlider;
if( pSlider == NULL )
return E_OUTOFMEMORY;
hr = AddControl( pSlider );
if( FAILED(hr) )
return hr;
// Set the ID and list index
pSlider->SetID( ID );
pSlider->SetLocation( x, y );
pSlider->SetSize( width, height );
pSlider->m_bIsDefault = bIsDefault;
pSlider->SetRange( min, max );
pSlider->SetValue( value );
return S_OK;
}
//--------------------------------------------------------------------------------------
HRESULT CDXUTDialog::AddEditBox( int ID, LPCWSTR strText, int x, int y, int width, int height, bool bIsDefault, CDXUTEditBox** ppCreated )
{
HRESULT hr = S_OK;
CDXUTEditBox *pEditBox = new CDXUTEditBox( this );
if( ppCreated != NULL )
*ppCreated = pEditBox;
if( pEditBox == NULL )
return E_OUTOFMEMORY;
hr = AddControl( pEditBox );
if( FAILED(hr) )
return hr;
// Set the ID and position
pEditBox->SetID( ID );
pEditBox->SetLocation( x, y );
pEditBox->SetSize( width, height );
pEditBox->m_bIsDefault = bIsDefault;
if( strText )
pEditBox->SetText( strText );
return S_OK;
}
//--------------------------------------------------------------------------------------
HRESULT CDXUTDialog::AddIMEEditBox( int ID, LPCWSTR strText, int x, int y, int width, int height, bool bIsDefault, CDXUTIMEEditBox** ppCreated )
{
HRESULT hr = S_OK;
CDXUTIMEEditBox *pEditBox = new CDXUTIMEEditBox( this );
if( ppCreated != NULL )
*ppCreated = pEditBox;
if( pEditBox == NULL )
return E_OUTOFMEMORY;
hr = AddControl( pEditBox );
if( FAILED(hr) )
return hr;
// Set the ID and position
pEditBox->SetID( ID );
pEditBox->SetLocation( x, y );
pEditBox->SetSize( width, height );
pEditBox->m_bIsDefault = bIsDefault;
if( strText )
pEditBox->SetText( strText );
return S_OK;
}
//--------------------------------------------------------------------------------------
HRESULT CDXUTDialog::AddListBox( int ID, int x, int y, int width, int height, DWORD dwStyle, CDXUTListBox** ppCreated )
{
HRESULT hr = S_OK;
CDXUTListBox *pListBox = new CDXUTListBox( this );
if( ppCreated != NULL )
*ppCreated = pListBox;
if( pListBox == NULL )
return E_OUTOFMEMORY;
hr = AddControl( pListBox );
if( FAILED(hr) )
return hr;
// Set the ID and position
pListBox->SetID( ID );
pListBox->SetLocation( x, y );
pListBox->SetSize( width, height );
pListBox->SetStyle( dwStyle );
return S_OK;
}
//--------------------------------------------------------------------------------------
HRESULT CDXUTDialog::InitControl( CDXUTControl* pControl )
{
HRESULT hr;
if( pControl == NULL )
return E_INVALIDARG;
pControl->m_Index = m_Controls.GetSize();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -