home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / mfc / ole / wordpad / optionsh.cpp < prev    next >
C/C++ Source or Header  |  1998-03-26  |  5KB  |  144 lines

  1. // optionsh.cpp : implementation file
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1998 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12.  
  13. #include "stdafx.h"
  14. #include "wordpad.h"
  15. #include "unitspag.h"
  16. #include "docopt.h"
  17. #include "optionsh.h"
  18.  
  19. #ifdef _DEBUG
  20. #undef THIS_FILE
  21. static char BASED_CODE THIS_FILE[] = __FILE__;
  22. #endif
  23.  
  24. /////////////////////////////////////////////////////////////////////////////
  25. // COptionSheet
  26.  
  27. COptionSheet::COptionSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
  28.     : CCSPropertySheet(nIDCaption, pParentWnd, iSelectPage),
  29.     pageText(IDS_TEXT_OPTIONS), pageRTF(IDS_RTF_OPTIONS),
  30.     pageWord(IDS_WORD6_OPTIONS), pageWrite(IDS_WRITE_OPTIONS),
  31.     pageEmbedded()
  32. {
  33.     units.m_nUnits = theApp.GetUnits();
  34.     units.m_bWordSel = theApp.m_bWordSel;
  35.     pageText.m_nWordWrap = theApp.GetDocOptions(RD_TEXT).m_nWordWrap;
  36.     pageRTF.m_nWordWrap = theApp.GetDocOptions(RD_RICHTEXT).m_nWordWrap;
  37.     pageWord.m_nWordWrap = theApp.GetDocOptions(RD_WINWORD6).m_nWordWrap;
  38.     pageWrite.m_nWordWrap = theApp.GetDocOptions(RD_WRITE).m_nWordWrap;
  39.     pageEmbedded.m_nWordWrap = theApp.GetDocOptions(RD_EMBEDDED).m_nWordWrap;
  40.     SetPageButtons(pageText, theApp.GetDockState(RD_TEXT));
  41.     SetPageButtons(pageRTF, theApp.GetDockState(RD_RICHTEXT));
  42.     SetPageButtons(pageWord, theApp.GetDockState(RD_WINWORD6));
  43.     SetPageButtons(pageWrite, theApp.GetDockState(RD_WRITE));
  44.     SetPageButtons(pageEmbedded, theApp.GetDockState(RD_EMBEDDED));
  45.     SetPageButtons(pageEmbedded, theApp.GetDockState(RD_EMBEDDED, FALSE));
  46.     AddPage(&units);
  47.     AddPage(&pageText);
  48.     AddPage(&pageRTF);
  49.     AddPage(&pageWord);
  50.     AddPage(&pageWrite);
  51.     AddPage(&pageEmbedded);
  52. }
  53.  
  54. void COptionSheet::SetPageButtons(CDocOptPage& page, CDockState& ds)
  55. {
  56.     if (ds.m_arrBarInfo.GetSize() == 0)
  57.     {
  58.         page.m_bFormatBar = page.m_bRulerBar = TRUE;
  59.         page.m_bToolBar = page.m_bStatusBar = TRUE;
  60.     }
  61.     else
  62.     {
  63.         for (int i = 0;i < ds.m_arrBarInfo.GetSize(); i++)
  64.         {
  65.             CControlBarInfo* pInfo = (CControlBarInfo*)ds.m_arrBarInfo[i];
  66.             ASSERT(pInfo != NULL);
  67.             switch (pInfo->m_nBarID)
  68.             {
  69.                 case ID_VIEW_FORMATBAR:
  70.                     page.m_bFormatBar = page.m_bFormatBar || pInfo->m_bVisible;
  71.                     break;
  72.                 case ID_VIEW_RULER:
  73.                     page.m_bRulerBar = page.m_bRulerBar || pInfo->m_bVisible;
  74.                     break;
  75.                 case ID_VIEW_TOOLBAR:
  76.                     page.m_bToolBar = page.m_bToolBar || pInfo->m_bVisible;
  77.                     break;
  78.                 case ID_VIEW_STATUS_BAR:
  79.                     page.m_bStatusBar = page.m_bStatusBar || pInfo->m_bVisible;
  80.                     break;
  81.             }
  82.         }
  83.     }
  84. }
  85.  
  86. void COptionSheet::SetState(CDocOptPage& page, CDockState& ds)
  87. {
  88.     for (int i = 0;i < ds.m_arrBarInfo.GetSize(); i++)
  89.     {
  90.         CControlBarInfo* pInfo = (CControlBarInfo*)ds.m_arrBarInfo[i];
  91.         ASSERT(pInfo != NULL);
  92.         switch (pInfo->m_nBarID)
  93.         {
  94.             case ID_VIEW_FORMATBAR:
  95.                 pInfo->m_bVisible = page.m_bFormatBar;
  96.                 break;
  97.             case ID_VIEW_RULER:
  98.                 pInfo->m_bVisible = page.m_bRulerBar;
  99.                 break;
  100.             case ID_VIEW_TOOLBAR:
  101.                 pInfo->m_bVisible = page.m_bToolBar;
  102.                 break;
  103.             case ID_VIEW_STATUS_BAR:
  104.                 pInfo->m_bVisible = page.m_bStatusBar;
  105.                 break;
  106.         }
  107.     }
  108. }
  109.  
  110. BEGIN_MESSAGE_MAP(COptionSheet, CCSPropertySheet)
  111.     //{{AFX_MSG_MAP(COptionSheet)
  112.     ON_WM_CREATE()
  113.     //}}AFX_MSG_MAP
  114. END_MESSAGE_MAP()
  115.  
  116.  
  117. /////////////////////////////////////////////////////////////////////////////
  118. // COptionSheet message handlers
  119.  
  120. int COptionSheet::DoModal()
  121. {
  122.     int nRes = CCSPropertySheet::DoModal();
  123.     if (nRes == IDOK)
  124.     {
  125.         SetState(pageText, theApp.GetDockState(RD_TEXT));
  126.         SetState(pageRTF, theApp.GetDockState(RD_RICHTEXT));
  127.         SetState(pageWord, theApp.GetDockState(RD_WINWORD6));
  128.         SetState(pageWrite, theApp.GetDockState(RD_WRITE));
  129.         SetState(pageEmbedded, theApp.GetDockState(RD_EMBEDDED));
  130.         SetState(pageEmbedded, theApp.GetDockState(RD_EMBEDDED, FALSE));
  131.         theApp.SetUnits(units.m_nUnits);
  132.         theApp.m_bWordSel = units.m_bWordSel;
  133.         theApp.GetDocOptions(RD_TEXT).m_nWordWrap = pageText.m_nWordWrap;
  134.         theApp.GetDocOptions(RD_RICHTEXT).m_nWordWrap = pageRTF.m_nWordWrap;
  135.         theApp.GetDocOptions(RD_WINWORD6).m_nWordWrap = pageWord.m_nWordWrap;
  136.         theApp.GetDocOptions(RD_WRITE).m_nWordWrap = pageWrite.m_nWordWrap;
  137.         theApp.GetDocOptions(RD_EMBEDDED).m_nWordWrap = pageEmbedded.m_nWordWrap;
  138.     }
  139.     return nRes;
  140. }
  141.  
  142. /////////////////////////////////////////////////////////////////////////////
  143. // COptionSheet message handlers
  144.