From 92f47f526fa3bc45f2d955e7ed8e3aec5a623120 Mon Sep 17 00:00:00 2001 From: RD42 <42702181+dashr9230@users.noreply.github.com> Date: Fri, 24 May 2024 23:09:12 +0800 Subject: [PATCH] [saco] Implement `CDXUTDialog::GetNextControl(...)` --- saco/d3d9/common/DXUTgui.cpp | 19 +++++++++++++++++++ saco/d3d9/common/DXUTgui.h | 2 ++ 2 files changed, 21 insertions(+) diff --git a/saco/d3d9/common/DXUTgui.cpp b/saco/d3d9/common/DXUTgui.cpp index b9a56fc..e610b32 100644 --- a/saco/d3d9/common/DXUTgui.cpp +++ b/saco/d3d9/common/DXUTgui.cpp @@ -372,6 +372,25 @@ CDXUTControl* CDXUTDialog::GetControl( int ID, UINT nControlType ) +//-------------------------------------------------------------------------------------- +CDXUTControl* CDXUTDialog::GetNextControl( CDXUTControl* pControl ) +{ + int index = pControl->m_Index + 1; + + CDXUTDialog* pDialog = pControl->m_pDialog; + + // Cycle through dialogs in the loop to find the next control. Note + // that if only one control exists in all looped dialogs it will + // be the returned 'next' control. + while( index >= (int) pDialog->m_Controls.GetSize() ) + { + pDialog = pDialog->m_pNextDialog; + index = 0; + } + + return pDialog->m_Controls.GetAt( index ); +} + //-------------------------------------------------------------------------------------- // CDXUTControl class //-------------------------------------------------------------------------------------- diff --git a/saco/d3d9/common/DXUTgui.h b/saco/d3d9/common/DXUTgui.h index ca2c829..31ddfb4 100644 --- a/saco/d3d9/common/DXUTgui.h +++ b/saco/d3d9/common/DXUTgui.h @@ -101,6 +101,8 @@ public: // Methods called by controls void SendEvent( UINT nEvent, bool bTriggeredByUser, CDXUTControl* pControl ); + + static CDXUTControl* GetNextControl( CDXUTControl* pControl ); void RemoveAllControls(); // Sets the callback used to notify the app of control events