mirror of
https://github.com/electronicarts/CnC_Renegade.git
synced 2025-12-16 23:51:41 -05:00
Initial commit of Command & Conquer Renegade source code.
This commit is contained in:
288
Code/Tools/WWConfig/WWConfigDlg.cpp
Normal file
288
Code/Tools/WWConfig/WWConfigDlg.cpp
Normal file
@@ -0,0 +1,288 @@
|
||||
/*
|
||||
** 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/>.
|
||||
*/
|
||||
|
||||
// WWConfigDlg.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "wwconfig.h"
|
||||
#include "wwconfigdlg.h"
|
||||
#include "videoconfigdialog.h"
|
||||
#include "audioconfigdialog.h"
|
||||
#include "performanceconfigdialog.h"
|
||||
#include "locale_api.h"
|
||||
#include "wwconfig_ids.h"
|
||||
|
||||
extern int GlobalExitValue;
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// CWWConfigDlg
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////
|
||||
CWWConfigDlg::CWWConfigDlg (CWnd *pParent)
|
||||
: CurrentTab (0),
|
||||
CDialog(CWWConfigDlg::IDD, pParent)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CWWConfigDlg)
|
||||
// NOTE: the ClassWizard will add member initialization here
|
||||
//}}AFX_DATA_INIT
|
||||
|
||||
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
|
||||
return ;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DoDataExchange
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////
|
||||
void
|
||||
CWWConfigDlg::DoDataExchange (CDataExchange *pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CWWConfigDlg)
|
||||
DDX_Control(pDX, IDC_TAB_CTRL, m_TabCtrl);
|
||||
//}}AFX_DATA_MAP
|
||||
return ;
|
||||
}
|
||||
|
||||
BEGIN_MESSAGE_MAP(CWWConfigDlg, CDialog)
|
||||
//{{AFX_MSG_MAP(CWWConfigDlg)
|
||||
ON_WM_PAINT()
|
||||
ON_WM_QUERYDRAGICON()
|
||||
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_CTRL, OnSelchangeTabCtrl)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// OnInitDialog
|
||||
//
|
||||
// Modified: 12/06/2001 by MML - Retrieving strings from Locomoto file.
|
||||
///////////////////////////////////////////////////////////////////
|
||||
BOOL
|
||||
CWWConfigDlg::OnInitDialog (void)
|
||||
{
|
||||
char string[ _MAX_PATH ];
|
||||
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// Set the icon for this dialog. The framework does this automatically
|
||||
// when the application's main window is not a dialog
|
||||
SetIcon (m_hIcon, TRUE);
|
||||
SetIcon (m_hIcon, FALSE);
|
||||
|
||||
//
|
||||
// Set Title of Dialog.
|
||||
//
|
||||
Locale_GetString( IDS_WWCONFIG_TITLE, string );
|
||||
SetWindowText((LPCTSTR) string );
|
||||
|
||||
//
|
||||
// Set text on buttons.
|
||||
//
|
||||
Locale_GetString( IDS_OK, string );
|
||||
SetDlgItemText( IDOK, string );
|
||||
|
||||
Locale_GetString( IDS_CANCEL, string );
|
||||
SetDlgItemText( IDCANCEL, string );
|
||||
|
||||
//
|
||||
// Add a tab to the dialog for video configuration
|
||||
//
|
||||
TC_ITEM tab_info = { 0 };
|
||||
|
||||
Locale_GetString( IDS_VIDEO_TAB, string );
|
||||
tab_info.mask = TCIF_TEXT;
|
||||
// tab_info.pszText = "Video";
|
||||
tab_info.pszText = string;
|
||||
m_TabCtrl.InsertItem (0xFF, &tab_info);
|
||||
|
||||
//
|
||||
// Add a tab to the dialog for audio configuration
|
||||
//
|
||||
Locale_GetString( IDS_SOUND_TAB, string );
|
||||
tab_info.mask = TCIF_TEXT;
|
||||
// tab_info.pszText = "Sound";
|
||||
tab_info.pszText = string;
|
||||
m_TabCtrl.InsertItem (0xFF, &tab_info);
|
||||
|
||||
//
|
||||
// Add a tab to the dialog for performance configuration
|
||||
//
|
||||
Locale_GetString( IDS_PERFORMANCE_TAB, string );
|
||||
tab_info.mask = TCIF_TEXT;
|
||||
// tab_info.pszText = "Performance";
|
||||
tab_info.pszText = string;
|
||||
m_TabCtrl.InsertItem (0xFF, &tab_info);
|
||||
|
||||
//
|
||||
// Get the display rectangle of the tab control
|
||||
//
|
||||
CRect tab_rect;
|
||||
m_TabCtrl.GetWindowRect (&tab_rect);
|
||||
m_TabCtrl.AdjustRect (FALSE, &tab_rect);
|
||||
ScreenToClient (&tab_rect);
|
||||
|
||||
VideoConfigDialogClass *video_page = new VideoConfigDialogClass (this);
|
||||
AudioConfigDialogClass *audio_page = new AudioConfigDialogClass (this);
|
||||
PerformanceConfigDialogClass *performance_page = new PerformanceConfigDialogClass (this);
|
||||
|
||||
video_page->SetWindowPos ( NULL, tab_rect.left, tab_rect.top, 0, 0, SWP_NOZORDER | SWP_NOSIZE);
|
||||
audio_page->SetWindowPos ( NULL, tab_rect.left, tab_rect.top, 0, 0, SWP_NOZORDER | SWP_NOSIZE);
|
||||
performance_page->SetWindowPos ( NULL, tab_rect.left, tab_rect.top, 0, 0, SWP_NOZORDER | SWP_NOSIZE);
|
||||
|
||||
ConfigPages.Add ( video_page );
|
||||
ConfigPages.Add ( audio_page );
|
||||
ConfigPages.Add ( performance_page );
|
||||
|
||||
//
|
||||
// Display the first category page
|
||||
//
|
||||
ConfigPages[0]->ShowWindow( SW_SHOW );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// OnPaint
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////
|
||||
void
|
||||
CWWConfigDlg::OnPaint (void)
|
||||
{
|
||||
if (IsIconic())
|
||||
{
|
||||
CPaintDC dc(this);
|
||||
|
||||
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
|
||||
|
||||
// Center icon in client rectangle
|
||||
int cxIcon = GetSystemMetrics(SM_CXICON);
|
||||
int cyIcon = GetSystemMetrics(SM_CYICON);
|
||||
CRect rect;
|
||||
GetClientRect(&rect);
|
||||
int x = (rect.Width() - cxIcon + 1) / 2;
|
||||
int y = (rect.Height() - cyIcon + 1) / 2;
|
||||
|
||||
// Draw the icon
|
||||
dc.DrawIcon(x, y, m_hIcon);
|
||||
}
|
||||
else
|
||||
{
|
||||
CDialog::OnPaint();
|
||||
}
|
||||
|
||||
return ;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// OnQueryDragIcon
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////
|
||||
HCURSOR
|
||||
CWWConfigDlg::OnQueryDragIcon (void)
|
||||
{
|
||||
return (HCURSOR) m_hIcon;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// OnOK
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////
|
||||
void
|
||||
CWWConfigDlg::OnOK (void)
|
||||
{
|
||||
GlobalExitValue=0;
|
||||
//
|
||||
// Loop over each page and ask them to save themselves
|
||||
//
|
||||
for (int index = 0; index < ConfigPages.Count (); index ++) {
|
||||
ConfigPages[index]->SendMessage (WM_USER + 101);
|
||||
}
|
||||
|
||||
CDialog::OnOK ();
|
||||
return ;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// OnSelchangeTabCtrl
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////
|
||||
void
|
||||
CWWConfigDlg::OnSelchangeTabCtrl
|
||||
(
|
||||
NMHDR * pNMHDR,
|
||||
LRESULT * pResult
|
||||
)
|
||||
{
|
||||
(*pResult) = 0;
|
||||
|
||||
//
|
||||
// Check to see if the user has selected a new tab
|
||||
//
|
||||
int newtab = m_TabCtrl.GetCurSel ();
|
||||
if (CurrentTab != newtab) {
|
||||
|
||||
//
|
||||
// Hide the old tab
|
||||
//
|
||||
if (CurrentTab < ConfigPages.Count () && ConfigPages[CurrentTab] != NULL) {
|
||||
ConfigPages[CurrentTab]->ShowWindow (SW_HIDE);
|
||||
}
|
||||
|
||||
//
|
||||
// Show the new tab
|
||||
//
|
||||
if (ConfigPages[newtab] != NULL) {
|
||||
ConfigPages[newtab]->ShowWindow (SW_SHOW);
|
||||
}
|
||||
|
||||
//
|
||||
// Remember what our new current tab is
|
||||
//
|
||||
CurrentTab = newtab;
|
||||
}
|
||||
|
||||
return ;
|
||||
}
|
||||
|
||||
|
||||
void CWWConfigDlg::OnCancel()
|
||||
{
|
||||
// TODO: Add extra cleanup here
|
||||
GlobalExitValue=1;
|
||||
CDialog::OnCancel();
|
||||
}
|
||||
Reference in New Issue
Block a user