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.
173 lines
3.9 KiB
C++
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_)
|