PAGESET.CPP
//=------------------------------------------------------------------------= 
// PageSet.Cpp 
//=------------------------------------------------------------------------= 
// Copyright 1992-1997 Microsoft Corporation.  All Rights Reserved. 
// 
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF 
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO 
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A 
// PARTICULAR PURPOSE. 
//=--------------------------------------------------------------------------= 
// 
// implementation of the CPageSetup class 
// 
 
#include "stdafx.h" 
#include "superpad.h" 
#include <malloc.h> 
 
#ifdef _DEBUG 
#undef THIS_FILE 
static char BASED_CODE THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CPageSetupDlg dialog 
 
IMPLEMENT_DYNAMIC(CPageSetupDlg, CDialog) 
 
CPageSetupDlg::CPageSetupDlg(CWnd* pParent /*=NULL*/) 
: CDialog(CPageSetupDlg::IDD, pParent) 
{ 
//{{AFX_DATA_INIT(CPageSetupDlg) 
m_iFooterTime = -1; 
m_iHeaderTime = -1; 
//}}AFX_DATA_INIT 
} 
 
void CPageSetupDlg::DoDataExchange(CDataExchange* pDX) 
{ 
CDialog::DoDataExchange(pDX); 
//{{AFX_DATA_MAP(CPageSetupDlg) 
DDX_Text(pDX, IDC_FOOTER, m_strFooter); 
DDX_Text(pDX, IDC_HEADER, m_strHeader); 
DDX_Radio(pDX, IDC_FOOTER_FILE, m_iFooterTime); 
DDX_Radio(pDX, IDC_HEADER_FILE, m_iHeaderTime); 
//}}AFX_DATA_MAP 
} 
 
BEGIN_MESSAGE_MAP(CPageSetupDlg, CDialog) 
//{{AFX_MSG_MAP(CPageSetupDlg) 
//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CPageSetup member functions 
 
static void Replace(CString& strModify, LPCTSTR pszWhat, LPCTSTR pszWith) 
// replace pszWhat with pwzWith in string strModify 
{ 
int i; 
if ((i = strModify.Find(pszWhat)) >= 0) 
{ 
strModify = strModify.Left(i) + pszWith + 
strModify.Mid(i+lstrlen(pszWhat)); 
} 
} 
 
void CPageSetupDlg::FormatFilePage(CString& strFormat, 
LPCTSTR pszFileName, UINT nPage) 
{ 
TCHAR sz[32]; 
wsprintf(sz, _T("%d"), nPage); 
::Replace(strFormat, _T("&p"), sz); 
if (pszFileName == NULL) 
{ 
pszFileName = sz; 
sz[0] = 0; 
} 
::Replace(strFormat, _T("&f"), pszFileName); 
} 
 
void CPageSetupDlg::FormatHeader(CString& strHeader, CTime& time, 
LPCTSTR pszFileName, UINT nPage) 
{ 
CString strFormat = m_strHeader; 
FormatFilePage(strFormat, pszFileName, nPage); 
#ifdef _UNICODE 
int nLen = strFormat.GetLength(); 
char *pszFormat = (char*)_alloca(nLen+1); 
wcstombs(pszFormat, strFormat, nLen+1); 
strHeader = time.Format(pszFormat); 
#else 
strHeader = time.Format(strFormat); 
#endif 
} 
 
void CPageSetupDlg::FormatFooter(CString& strFooter, CTime& time, 
LPCTSTR pszFileName, UINT nPage) 
{ 
CString strFormat = m_strFooter; 
FormatFilePage(strFormat, pszFileName, nPage); 
#ifdef _UNICODE 
int nLen = strFormat.GetLength(); 
char *pszFormat = (char*)_alloca(nLen+1); 
wcstombs(pszFormat, strFormat, nLen+1); 
strFooter = time.Format(pszFormat); 
#else 
strFooter = time.Format(strFormat); 
#endif 
} 
 
 
static TCHAR BASED_CODE szPageSetup[] = _T("PageSetup"); 
static TCHAR BASED_CODE szHeader[] = _T("Header"); 
static TCHAR BASED_CODE szFooter[] = _T("Footer"); 
static TCHAR BASED_CODE szHeaderTime[] = _T("HeaderTime"); 
static TCHAR BASED_CODE szFooterTime[] = _T("FooterTime"); 
 
void CPageSetupDlg::Initialize() 
{ 
m_strHeader = AfxGetApp()->GetProfileString(szPageSetup, szHeader, 
_T("File: &f")); 
m_strFooter = AfxGetApp()->GetProfileString(szPageSetup, szFooter, 
_T("Page: &p")); 
m_iHeaderTime = AfxGetApp()->GetProfileInt(szPageSetup, szHeaderTime, 0); 
m_iFooterTime = AfxGetApp()->GetProfileInt(szPageSetup, szFooterTime, 0); 
m_strHeaderOld = m_strHeader; 
m_strFooterOld = m_strFooter; 
m_iHeaderTimeOld = m_iHeaderTime; 
m_iFooterTimeOld = m_iFooterTime; 
} 
 
void CPageSetupDlg::Terminate() 
{ 
if (m_strHeader != m_strHeaderOld) 
AfxGetApp()->WriteProfileString(szPageSetup, szHeader, m_strHeader); 
if (m_strFooter != m_strFooterOld) 
AfxGetApp()->WriteProfileString(szPageSetup, szFooter, m_strFooter); 
if (m_iHeaderTime != m_iHeaderTimeOld) 
AfxGetApp()->WriteProfileInt(szPageSetup, szHeaderTime, m_iHeaderTime); 
if (m_iFooterTime != m_iFooterTimeOld) 
AfxGetApp()->WriteProfileInt(szPageSetup, szFooterTime, m_iFooterTime); 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CPageSetupDlg message handlers