home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 December / PCWKCD1296.iso / vjplusb / activex / inetsdk / samples / urlpad / pageset.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-05-29  |  4.4 KB  |  147 lines

  1. //=------------------------------------------------------------------------=
  2. // PageSet.Cpp
  3. //=------------------------------------------------------------------------=
  4. // Copyright 1992-1996 Microsoft Corporation.  All Rights Reserved.
  5. //
  6. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  7. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  8. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  9. // PARTICULAR PURPOSE.
  10. //=--------------------------------------------------------------------------=
  11. //
  12. // implementation of the CPageSetup class
  13. //
  14.  
  15. #include "stdafx.h"
  16. #include "superpad.h"
  17. #include <malloc.h>
  18.  
  19. #ifdef _DEBUG
  20. #undef THIS_FILE
  21. static char BASED_CODE THIS_FILE[] = __FILE__;
  22. #endif
  23.  
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CPageSetupDlg dialog
  26.  
  27. IMPLEMENT_DYNAMIC(CPageSetupDlg, CDialog)
  28.  
  29. CPageSetupDlg::CPageSetupDlg(CWnd* pParent /*=NULL*/)
  30.     : CDialog(CPageSetupDlg::IDD, pParent)
  31. {
  32.     //{{AFX_DATA_INIT(CPageSetupDlg)
  33.     m_iFooterTime = -1;
  34.     m_iHeaderTime = -1;
  35.     //}}AFX_DATA_INIT
  36. }
  37.  
  38. void CPageSetupDlg::DoDataExchange(CDataExchange* pDX)
  39. {
  40.     CDialog::DoDataExchange(pDX);
  41.     //{{AFX_DATA_MAP(CPageSetupDlg)
  42.     DDX_Text(pDX, IDC_FOOTER, m_strFooter);
  43.     DDX_Text(pDX, IDC_HEADER, m_strHeader);
  44.     DDX_Radio(pDX, IDC_FOOTER_FILE, m_iFooterTime);
  45.     DDX_Radio(pDX, IDC_HEADER_FILE, m_iHeaderTime);
  46.     //}}AFX_DATA_MAP
  47. }
  48.  
  49. BEGIN_MESSAGE_MAP(CPageSetupDlg, CDialog)
  50.     //{{AFX_MSG_MAP(CPageSetupDlg)
  51.     //}}AFX_MSG_MAP
  52. END_MESSAGE_MAP()
  53.  
  54. /////////////////////////////////////////////////////////////////////////////
  55. // CPageSetup member functions
  56.  
  57. static void Replace(CString& strModify, LPCTSTR pszWhat, LPCTSTR pszWith)
  58.     // replace pszWhat with pwzWith in string strModify
  59. {
  60.     int i;
  61.     if ((i = strModify.Find(pszWhat)) >= 0)
  62.     {
  63.         strModify = strModify.Left(i) + pszWith +
  64.             strModify.Mid(i+lstrlen(pszWhat));
  65.     }
  66. }
  67.  
  68. void CPageSetupDlg::FormatFilePage(CString& strFormat,
  69.     LPCTSTR pszFileName, UINT nPage)
  70. {
  71.     TCHAR sz[32];
  72.     wsprintf(sz, _T("%d"), nPage);
  73.     ::Replace(strFormat, _T("&p"), sz);
  74.     if (pszFileName == NULL)
  75.     {
  76.         pszFileName = sz;
  77.         sz[0] = 0;
  78.     }
  79.     ::Replace(strFormat, _T("&f"), pszFileName);
  80. }
  81.  
  82. void CPageSetupDlg::FormatHeader(CString& strHeader, CTime& time,
  83.     LPCTSTR pszFileName, UINT nPage)
  84. {
  85.     CString strFormat = m_strHeader;
  86.     FormatFilePage(strFormat, pszFileName, nPage);
  87. #ifdef _UNICODE
  88.     int nLen = strFormat.GetLength();
  89.     char *pszFormat = (char*)_alloca(nLen+1);
  90.     wcstombs(pszFormat, strFormat, nLen+1);
  91.     strHeader = time.Format(pszFormat);
  92. #else
  93.     strHeader = time.Format(strFormat);
  94. #endif
  95. }
  96.  
  97. void CPageSetupDlg::FormatFooter(CString& strFooter, CTime& time,
  98.     LPCTSTR pszFileName, UINT nPage)
  99. {
  100.     CString strFormat = m_strFooter;
  101.     FormatFilePage(strFormat, pszFileName, nPage);
  102. #ifdef _UNICODE
  103.     int nLen = strFormat.GetLength();
  104.     char *pszFormat = (char*)_alloca(nLen+1);
  105.     wcstombs(pszFormat, strFormat, nLen+1);
  106.     strFooter = time.Format(pszFormat);
  107. #else
  108.     strFooter = time.Format(strFormat);
  109. #endif
  110. }
  111.  
  112.  
  113. static TCHAR BASED_CODE szPageSetup[] = _T("PageSetup");
  114. static TCHAR BASED_CODE szHeader[] = _T("Header");
  115. static TCHAR BASED_CODE szFooter[] = _T("Footer");
  116. static TCHAR BASED_CODE szHeaderTime[] = _T("HeaderTime");
  117. static TCHAR BASED_CODE szFooterTime[] = _T("FooterTime");
  118.  
  119. void CPageSetupDlg::Initialize()
  120. {
  121.     m_strHeader = AfxGetApp()->GetProfileString(szPageSetup, szHeader,
  122.         _T("File: &f"));
  123.     m_strFooter = AfxGetApp()->GetProfileString(szPageSetup, szFooter,
  124.         _T("Page: &p"));
  125.     m_iHeaderTime = AfxGetApp()->GetProfileInt(szPageSetup, szHeaderTime, 0);
  126.     m_iFooterTime = AfxGetApp()->GetProfileInt(szPageSetup, szFooterTime, 0);
  127.     m_strHeaderOld = m_strHeader;
  128.     m_strFooterOld = m_strFooter;
  129.     m_iHeaderTimeOld = m_iHeaderTime;
  130.     m_iFooterTimeOld = m_iFooterTime;
  131. }
  132.  
  133. void CPageSetupDlg::Terminate()
  134. {
  135.     if (m_strHeader != m_strHeaderOld)
  136.         AfxGetApp()->WriteProfileString(szPageSetup, szHeader, m_strHeader);
  137.     if (m_strFooter != m_strFooterOld)
  138.         AfxGetApp()->WriteProfileString(szPageSetup, szFooter, m_strFooter);
  139.     if (m_iHeaderTime != m_iHeaderTimeOld)
  140.         AfxGetApp()->WriteProfileInt(szPageSetup, szHeaderTime, m_iHeaderTime);
  141.     if (m_iFooterTime != m_iFooterTimeOld)
  142.         AfxGetApp()->WriteProfileInt(szPageSetup, szFooterTime, m_iFooterTime);
  143. }
  144.  
  145. /////////////////////////////////////////////////////////////////////////////
  146. // CPageSetupDlg message handlers
  147.