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

  1. // DlgOpenF.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "diff.h"
  6. #include "DlgOpenF.h"
  7.  
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13.  
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CDlgOpenFiles dialog
  16.  
  17.  
  18. CDlgOpenFiles::CDlgOpenFiles(CWnd* pParent /*=NULL*/)
  19.     : CDialog(CDlgOpenFiles::IDD, pParent)
  20. {
  21.     //{{AFX_DATA_INIT(CDlgOpenFiles)
  22.     m_File1 = _T("");
  23.     m_File2 = _T("");
  24.     //}}AFX_DATA_INIT
  25. }
  26.  
  27.  
  28. void CDlgOpenFiles::DoDataExchange(CDataExchange* pDX)
  29. {
  30.     CDialog::DoDataExchange(pDX);
  31.     //{{AFX_DATA_MAP(CDlgOpenFiles)
  32.     DDX_Text(pDX, IDC_EDIT_FILE1, m_File1);
  33.     DDV_MaxChars(pDX, m_File1, 255);
  34.     DDX_Text(pDX, IDC_EDIT_FILE2, m_File2);
  35.     DDV_MaxChars(pDX, m_File2, 255);
  36.     //}}AFX_DATA_MAP
  37. }
  38.  
  39.  
  40. BEGIN_MESSAGE_MAP(CDlgOpenFiles, CDialog)
  41.     //{{AFX_MSG_MAP(CDlgOpenFiles)
  42.     ON_BN_CLICKED(IDC_BUTTON_FILE1_BROWSE, OnButtonFile1Browse)
  43.     ON_BN_CLICKED(IDC_BUTTON_FILE2_BROWSE, OnButtonFile2Browse)
  44.     //}}AFX_MSG_MAP
  45. END_MESSAGE_MAP()
  46.  
  47. /////////////////////////////////////////////////////////////////////////////
  48. // CDlgOpenFiles attributes
  49. void CDlgOpenFiles::GetFile1(CString& rFile)
  50. {
  51.         rFile = m_File1;
  52. }
  53.  
  54. void CDlgOpenFiles::GetFile2(CString& rFile)
  55. {
  56.         rFile = m_File2;
  57. }
  58.  
  59. BOOL CDlgOpenFiles::IsValidFileSpec (LPCSTR lpszFileSpec)
  60. {
  61.     OFSTRUCT    of;
  62.     if(OpenFile(lpszFileSpec, &of, OF_EXIST) == HFILE_ERROR)
  63.     {
  64.         return FALSE;
  65.     }
  66.     else
  67.     {
  68.         return TRUE;
  69.     }
  70. }
  71.  
  72.  
  73. /////////////////////////////////////////////////////////////////////////////
  74. // CDlgOpenFiles message handlers
  75.  
  76. void CDlgOpenFiles::OnButtonFile1Browse() 
  77. {
  78.     UpdateData();
  79.     static char BASED_CODE szFilter[] = 
  80.         "All Files (*.*)|*.*|C++ Files (*.cpp, *.h)"\
  81.         "|*.cpp;*.h||";
  82.     CFileDialog dlg(TRUE,NULL,m_File1,NULL,szFilter);
  83.     
  84.     if (dlg.DoModal() == IDOK)
  85.     {
  86.         m_File1 = dlg.GetPathName();
  87.     }
  88.     UpdateData(FALSE);
  89. }
  90.  
  91. void CDlgOpenFiles::OnButtonFile2Browse() 
  92. {
  93.     UpdateData();
  94.     static char BASED_CODE szFilter[] = 
  95.         "All Files (*.*)|*.*|C++ Files (*.cpp, *.h)"\
  96.         "|*.cpp;*.h||";
  97.     CFileDialog dlg(TRUE,NULL,m_File2,NULL,szFilter);
  98.     
  99.     if (dlg.DoModal() == IDOK)
  100.     {
  101.         m_File2 = dlg.GetPathName();
  102.     }
  103.     UpdateData(FALSE);
  104. }
  105.  
  106. void CDlgOpenFiles::OnOK() 
  107. {
  108.     UpdateData();
  109.     if(IsValidFileSpec(m_File1) && 
  110.         (IsValidFileSpec(m_File2)))
  111.     {    
  112.         CDialog::OnOK();
  113.     }
  114.     else
  115.     {
  116.         CString ErrMsg;
  117.         AfxFormatString2(ErrMsg, IDS_ERRFMT_INVALIDFILE, 
  118.                             m_File1, m_File2);
  119.         MessageBox (ErrMsg);
  120.     }
  121. }
  122.