172 lines
5.1 KiB
C++
172 lines
5.1 KiB
C++
/*
|
|
** Command & Conquer Renegade(tm)
|
|
** Copyright 2025 Electronic Arts Inc.
|
|
**
|
|
** This program is free software: you can redistribute it and/or modify
|
|
** it under the terms of the GNU General Public License as published by
|
|
** the Free Software Foundation, either version 3 of the License, or
|
|
** (at your option) any later version.
|
|
**
|
|
** This program is distributed in the hope that it will be useful,
|
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
** GNU General Public License for more details.
|
|
**
|
|
** You should have received a copy of the GNU General Public License
|
|
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
/***********************************************************************************************
|
|
*** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
|
|
***********************************************************************************************
|
|
* *
|
|
* Project Name : LevelEdit *
|
|
* *
|
|
* $Archive:: /Commando/Code/Tools/LevelEdit/Splash.cpp $*
|
|
* *
|
|
* Author:: Patrick Smith *
|
|
* *
|
|
* $Modtime:: 12/07/99 5:51p $*
|
|
* *
|
|
* $Revision:: 2 $*
|
|
* *
|
|
*---------------------------------------------------------------------------------------------*
|
|
* Functions: *
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
|
|
|
|
|
#include "stdafx.h"
|
|
#include "Splash.h"
|
|
#include "SplashScreen.h"
|
|
#include "Utils.h"
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////
|
|
// Forward declarations
|
|
///////////////////////////////////////////////////////////////////////
|
|
UINT fnSplashScreenThread (DWORD, DWORD, DWORD, HRESULT *, HWND *phmain_wnd);
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////
|
|
//
|
|
// SplashClass
|
|
//
|
|
///////////////////////////////////////////////////////////////////////
|
|
SplashClass::SplashClass (void)
|
|
: m_hThreadWnd (NULL)
|
|
{
|
|
return ;
|
|
}
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////
|
|
//
|
|
// ~SplashClass
|
|
//
|
|
///////////////////////////////////////////////////////////////////////
|
|
SplashClass::~SplashClass (void)
|
|
{
|
|
Close ();
|
|
return ;
|
|
}
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Set_Status_Text
|
|
//
|
|
///////////////////////////////////////////////////////////////////////
|
|
void
|
|
SplashClass::Set_Status_Text (LPCTSTR text)
|
|
{
|
|
if (m_hThreadWnd != NULL) {
|
|
::PostMessage (m_hThreadWnd, WM_USER+102, 0, (LPARAM)text);
|
|
}
|
|
|
|
return ;
|
|
}
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Show
|
|
//
|
|
///////////////////////////////////////////////////////////////////////
|
|
void
|
|
SplashClass::Show (bool show)
|
|
{
|
|
//
|
|
// Kick off a thread that will display the splash screen
|
|
//
|
|
if (m_hThreadWnd == NULL) {
|
|
::Create_UI_Thread (fnSplashScreenThread, 0, 0, 0, NULL, &m_hThreadWnd);
|
|
}
|
|
|
|
::ShowWindow (m_hThreadWnd, show ? SW_SHOW : SW_HIDE);
|
|
|
|
//
|
|
// Register ourselves as the current status window
|
|
//
|
|
if (show) {
|
|
ProgressUIMgrClass::Set_Current_Progress_UI (this);
|
|
}
|
|
|
|
return ;
|
|
}
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Close
|
|
//
|
|
///////////////////////////////////////////////////////////////////////
|
|
void
|
|
SplashClass::Close (void)
|
|
{
|
|
//
|
|
// Close out the window
|
|
//
|
|
if (::IsWindow (m_hThreadWnd)) {
|
|
::PostMessage (m_hThreadWnd, WM_USER+101, 0, 0L);
|
|
m_hThreadWnd = NULL;
|
|
}
|
|
|
|
if (ProgressUIMgrClass::Get_Current_Progress_UI () == this) {
|
|
ProgressUIMgrClass::Set_Current_Progress_UI (NULL);
|
|
}
|
|
|
|
return ;
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// fnSplashScreenThread
|
|
//
|
|
////////////////////////////////////////////////////////////////////////////
|
|
UINT
|
|
fnSplashScreenThread
|
|
(
|
|
DWORD /*dwparam1*/,
|
|
DWORD /*dwparam2*/,
|
|
DWORD /*dwparam3*/,
|
|
HRESULT* /*presult*/,
|
|
HWND* phmain_wnd
|
|
)
|
|
{
|
|
//
|
|
// Create a new instance of the 'updating' dialog
|
|
//
|
|
SplashScreenClass *splash_wnd = new SplashScreenClass;
|
|
splash_wnd->CreateEx (0, "STATIC", "Level Edit", WS_POPUP | WS_VISIBLE, 0, 0, 100, 100, NULL, NULL);
|
|
splash_wnd->ShowWindow (SW_SHOW);
|
|
|
|
//
|
|
// Return the window handle of the main wnd to the calling thread
|
|
//
|
|
if (phmain_wnd != NULL) {
|
|
(*phmain_wnd) = splash_wnd->m_hWnd;
|
|
}
|
|
|
|
return 1;
|
|
}
|