Files
firestorm/Gameleap/code/mw4/Code/mw4print/ChildView.h
T
dicion b98cb87ef3 mw4print: MySQL export, configurable banner text
MySQL database export (dbexport.h / dbexport.cpp):
- New files dbexport.h / dbexport.cpp implement late-bound MySQL export.
  libmysql.dll is loaded at runtime via LoadLibrary/GetProcAddress so no
  MySQL SDK is required at compile time; the app runs normally if the DLL
  is absent.
- After each print job, match data is exported to a MySQL server before
  PrintDlg() is called: one row in 'match', one row per player in
  'player_result', one row per attacker/victim pair in 'pvp'.  An optional
  'event' table records every individual SRecScore entry (off by default).
  Tables are created automatically (CREATE TABLE IF NOT EXISTS) on first
  connect.
- Config stored in mw4print.ini (app directory), section [MySQLExport]:
  Enabled, Host, Port, Database, Username, Password, ExportEvents.
- Config loaded at startup (OnCreate); DB_LoadConfig() / DB_SaveConfig().
- Connection timeout set to 5 seconds so the app does not hang if the
  server is unreachable.
- libmysql.dll (MySQL Connector/C 32-bit) added to Gameleap/mw4/ so the
  deploy script copies it to MW4/ alongside mw4print.exe.

Database Settings dialog (File > Database Settings... / Ctrl+D):
- MFC dialog: enable checkbox, Host/Port/Database/Username/Password fields,
  Export Events checkbox, Test Connection button with live status label,
  OK/Cancel.  OK persists settings to mw4print.ini immediately.

Configurable banner text (File > Banner Setting...):
- The 'WWW.MECHJOCK.COM' URL string printed at the bottom of every score
  sheet is now configurable.  Stored as BannerText= in options.ini under
  [battle tech print] (same section/file as the other print layout params).
  File > Banner Setting... opens a dialog to edit it; OK saves to options.ini
  and takes effect on the next print job with no restart needed.
  Default value is the original MECHJOCK string if the key is absent.
2026-07-18 14:05:31 -05:00

173 lines
3.9 KiB
C++

// ChildView.h : interface of the CChildView class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_CHILDVIEW_H__ACBF21A2_E730_4817_8504_9E57F240E2A7__INCLUDED_)
#define AFX_CHILDVIEW_H__ACBF21A2_E730_4817_8504_9E57F240E2A7__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CDlgBannerSetting : public CDialog
{
public:
CDlgBannerSetting(CWnd* pParent = NULL);
enum { IDD = IDD_BANNER_SETTING };
protected:
virtual void DoDataExchange(CDataExchange* pDX);
virtual BOOL OnInitDialog();
virtual void OnOK();
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
// CChildView window
class MW4PRINT_COPYDATASTRUCT;
/////////////////////////////////////////////////////////////////////////////
// CDlgDBSettings dialog
class CDlgDBSettings : public CDialog
{
public:
CDlgDBSettings(CWnd* pParent = NULL);
enum { IDD = IDD_DB_SETTINGS };
protected:
virtual void DoDataExchange(CDataExchange* pDX);
virtual BOOL OnInitDialog();
virtual void OnOK();
afx_msg void OnTestConnection();
DECLARE_MESSAGE_MAP()
};
class CMyPrintInfo : public TDBLNK(CMyPrintInfo*)
{
public:
CString m_strFile;
bool m_bIncludeBot;
bool m_bPrinted;
public:
CMyPrintInfo(const char* pcszFile, bool bIncludeBot);
};
DECLARE_TARRAYREF(CLogInfo);
class CLogInfo
{
public:
int m_nState; // 0: no error(ok!!!), 1: (@err=1), error, 2: launched(@Launched=1)...
CStr m_strTime; // int m_nTime; // Time=%02d:%02d
int m_nPlayerCount; // Player Count=%d
// CStrArray: m_aPlayers // Players=%s,%s,%s...
public:
CLogInfo();
};
class CLogResult
{
public:
int m_nTotalPlayers;
int m_nGames;
int m_nUnfinished;
int m_nErrGames;
DWORD m_dwRet;
public:
CLogResult();
void GetLogResult(const CString& str);
void DoLogReport(const CStr& str, char* psz, int nBufferSize);
};
class CShortDate
{
public:
int m_nYear;
int m_nMonth;
int m_nDay;
public:
CShortDate(const CTime& t);
int Compare(const CShortDate& that);
void IncADay();
};
class CDlgGet2Dates : public CDialog
{
// Construction
public:
CDlgGet2Dates(SYSTEMTIME& SysTime, CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CDlgGet2Dates)
enum { IDD = IDD_GET_2DATES };
//}}AFX_DATA
CTime m_Start;
CTime m_End;
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDlgGet2Dates)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CDlgGet2Dates)
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
class CChildView : public CWnd
{
// Construction
public:
TDBLNKDESTROY(CMyPrintInfo) m_lstMPIs;
UINT m_uTimer;
public:
CChildView();
bool DoCopyData(HWND hwnd, const MW4PRINT_COPYDATASTRUCT& cd);
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CChildView)
protected:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CChildView();
// Generated message map functions
protected:
//{{AFX_MSG(CChildView)
afx_msg void OnPaint();
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnDestroy();
afx_msg void OnTimer(UINT nIDEvent);
//}}AFX_MSG
afx_msg void OnFileOpen();
afx_msg void OnFileLogReport();
afx_msg void OnFileLog2Dates();
afx_msg void OnFileDbSettings();
afx_msg void OnFileBannerSetting();
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_CHILDVIEW_H__ACBF21A2_E730_4817_8504_9E57F240E2A7__INCLUDED_)