Files
firestorm/Gameleap/code/mw4/Code/mw4print/mw4print.cpp
T
6c8650fa98 mw4print: declare the -debug globals in mw4print.cpp
Release build failed:

  mw4print.cpp(60) : error C2065: 'g_bDebugLog' : undeclared identifier
  mw4print.cpp(61) : error C2065: 'DbgLog' : undeclared identifier

3256c103 added the -debug switch and put both symbols in mw4dummy.h, but
mw4dummy.cpp is #included into ChildView.cpp rather than compiled on its own,
and mw4print.cpp is a separate translation unit including only stdafx.h,
mw4print.h and MainFrm.h. It therefore saw neither declaration. ChildView.cpp
and recscore.cpp compiled because they pull in mw4dummy.h directly.

Declared locally rather than including mw4dummy.h. That header is a game-source
shim: it #defines MString to CString, Scalar to float, Verify and gosASSERT to
nothing, and declares stub ReplicatorID / MemoryStream classes plus the Adept
damage-type enum. It exists so game sources can be compiled into the printer,
and it has no business reaching the MFC application code. mw4print.cpp already
reached AssetsDirectory1 the same way, so this follows the file's own
convention rather than introducing one.

recscore.cpp also calls DbgLog and is listed in the .dsp, but it carries
"# PROP Exclude_From_Build 1" and is only ever compiled through ChildView.cpp,
so mw4print.cpp was the single gap.

Co-authored-by: Claude Opus 5 (Anthropic) <noreply@anthropic.com>
Co-authored-by: GitHub Copilot <copilot@github.com>
2026-08-09 16:08:33 -05:00

169 lines
4.5 KiB
C++

// mw4print.cpp : Defines the class behaviors for the application.
//
#include "stdafx.h"
#include "mw4print.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMW4PrintApp
BEGIN_MESSAGE_MAP(CMW4PrintApp, CWinApp)
//{{AFX_MSG_MAP(CMW4PrintApp)
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMW4PrintApp construction
// Defined in mw4dummy.cpp, which is compiled into ChildView.cpp rather than on its own.
// Declared here instead of including mw4dummy.h: that header is a game-source shim that
// redefines MString, Scalar and Verify, and must not reach the MFC application code.
extern char AssetsDirectory1[MAX_PATH];
extern bool g_bDebugLog;
void DbgLog(const char* fmt, ...);
CMW4PrintApp::CMW4PrintApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CMW4PrintApp object
CMW4PrintApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CMW4PrintApp initialization
BOOL CMW4PrintApp::InitInstance()
{
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
GetModuleFileName(m_hInstance, AssetsDirectory1, sizeof(AssetsDirectory1));
char* p = strrchr(AssetsDirectory1, '\\');
if (p) {
*p = '\0';
} else {
AssetsDirectory1[0] = '\0';
}
const char* pszCmd = GetCommandLine();
if (strstr(pszCmd, "-debug") || strstr(pszCmd, "/debug")) {
g_bDebugLog = true;
DbgLog("=== mw4print started ===");
DbgLog("AssetsDirectory1: %s", AssetsDirectory1);
DbgLog("CommandLine: %s", pszCmd);
}
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
// Change the registry key under which our settings are stored.
// TODO: You should modify this string to be something appropriate
// such as the name of your company or organization.
SetRegistryKey(_T("Local AppWizard-Generated Applications"));
// To create the main window, this code creates a new frame window
// object and then sets it as the application's main window object.
CMainFrame* pFrame = new CMainFrame;
m_pMainWnd = pFrame;
// create and load the frame with its resources
pFrame->LoadFrame(IDR_MAINFRAME,
WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL,
NULL);
// The one and only window has been initialized, so show and update it.
pFrame->ShowWindow(SW_SHOW);
pFrame->UpdateWindow();
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMW4PrintApp message handlers
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
// No message handlers
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
// App command to run the dialog
void CMW4PrintApp::OnAppAbout()
{
CAboutDlg aboutDlg;
aboutDlg.DoModal();
}
/////////////////////////////////////////////////////////////////////////////
// CMW4PrintApp message handlers