home *** CD-ROM | disk | FTP | other *** search
/ Mastering MFC Development / MMD.ISO / labs / c05 / lab04 / baseline / diffdoc.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1997-02-20  |  2.7 KB  |  153 lines

  1. // diffDoc.cpp : implementation of the CDiffDoc class
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "diff.h"
  6.  
  7. #include "diffDoc.h"
  8. #include "diffview.h"
  9.  
  10. #include "splitter.h"
  11. #include "mainfrm.h"
  12. #include "dlgopenf.h"
  13.  
  14. #ifdef _DEBUG
  15. #undef THIS_FILE
  16. static char THIS_FILE[] = __FILE__;
  17. #endif
  18.  
  19. /////////////////////////////////////////////////////////////////////////////
  20. // CDiffDoc
  21.  
  22. IMPLEMENT_DYNCREATE(CDiffDoc, CRichEditDoc)
  23.  
  24. BEGIN_MESSAGE_MAP(CDiffDoc, CRichEditDoc)
  25.     //{{AFX_MSG_MAP(CDiffDoc)
  26.     ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
  27.     //}}AFX_MSG_MAP
  28. END_MESSAGE_MAP()
  29.  
  30. /////////////////////////////////////////////////////////////////////////////
  31. // CDiffDoc construction/destruction
  32.  
  33. CDiffDoc::CDiffDoc()
  34. {
  35.     m_File1 = "";
  36.     m_File2 = "";
  37.     m_bRTF    = FALSE;
  38. }
  39.  
  40. CDiffDoc::~CDiffDoc()
  41. {
  42. }
  43.  
  44. CRichEditCntrItem* CDiffDoc::CreateClientItem(REOBJECT* preo) const
  45. {
  46.         // cast away constness of this
  47.         return new CRichEditCntrItem();
  48. }
  49.  
  50. BOOL CDiffDoc::OnNewDocument()
  51. {
  52.     if (!CRichEditDoc::OnNewDocument())
  53.         return FALSE;
  54.  
  55.     // TODO: add reinitialization code here
  56.     // (SDI documents will reuse this document)
  57.  
  58.     return TRUE;
  59. }
  60.  
  61. /////////////////////////////////////////////////////////////////////////////
  62. // CDiffDoc serialization
  63.  
  64. void CDiffDoc::Serialize(CArchive& ar)
  65. {
  66.     if (ar.IsStoring())
  67.     {
  68.         // TODO: add storing code here
  69.     }
  70.     else
  71.     {
  72.         // TODO: add loading code here
  73.     }
  74. }
  75.  
  76. /////////////////////////////////////////////////////////////////////////////
  77. // CDiffDoc diagnostics
  78.  
  79. #ifdef _DEBUG
  80. void CDiffDoc::AssertValid() const
  81. {
  82.     CRichEditDoc::AssertValid();
  83. }
  84.  
  85. void CDiffDoc::Dump(CDumpContext& dc) const
  86. {
  87.     CRichEditDoc::Dump(dc);
  88. }
  89. #endif //_DEBUG
  90.  
  91. /////////////////////////////////////////////////////////////////////////////
  92. // CDiffDoc commands
  93.  
  94. void CDiffDoc::OnFileOpen() 
  95. {
  96.  
  97.     CDlgOpenFiles dlg;
  98.  
  99.     if(dlg.DoModal() == IDOK)
  100.     {
  101.         dlg.GetFile1(m_File1);
  102.         dlg.GetFile2(m_File2);
  103.         RunComparison (m_File1, m_File2);
  104.     }
  105. }
  106.  
  107.  
  108. void CDiffDoc::RunComparison (LPCSTR lpszFile1, LPCSTR lpszFile2)
  109. {
  110.     CMainFrame * pFrame        = CDiffApp::GetApp()->GetMainFrame();
  111.     
  112.     if(pFrame)
  113.     {
  114.         CSplitter * pSplitter    = pFrame->GetSplitter();
  115.  
  116.     
  117.         if(pSplitter)
  118.         {
  119.             CDiffView * pView;
  120.             pView = (CDiffView *)pSplitter->GetPane(0,0);
  121.  
  122.             if (pView)
  123.             {
  124.                 CFile    file(lpszFile1, CFile::modeRead);
  125.                 CArchive ar(&file, CArchive::load);
  126.                 pView->Serialize(ar);
  127.             }
  128.  
  129.             pView = (CDiffView *)pSplitter->GetPane(0,1);
  130.             if (pView)
  131.             {
  132.                 CFile    file(lpszFile2, CFile::modeRead);
  133.                 CArchive ar(&file, CArchive::load);
  134.                 pView->Serialize(ar);
  135.             }
  136.             //      Flag as clean so that we won't get
  137.             //      prompted to save
  138.             SetModifiedFlag(FALSE);
  139.  
  140.         }
  141.     }
  142. }
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.