home *** CD-ROM | disk | FTP | other *** search
/ Mastering MFC Development / MMD.ISO / labs / c06 / lab04 / ex02 / dlgopenf.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1997-02-20  |  2.2 KB  |  118 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.  
  80.     CFileDialog dlg(TRUE);
  81.     
  82.     if (dlg.DoModal() == IDOK)
  83.     {
  84.         m_File1 = dlg.GetPathName();
  85.     }
  86.     UpdateData(FALSE);
  87. }
  88.  
  89. void CDlgOpenFiles::OnButtonFile2Browse() 
  90. {
  91.     UpdateData();
  92.  
  93.     CFileDialog dlg(TRUE);
  94.     
  95.     if (dlg.DoModal() == IDOK)
  96.     {
  97.         m_File2 = dlg.GetPathName();
  98.     }
  99.     UpdateData(FALSE);
  100. }
  101.  
  102. void CDlgOpenFiles::OnOK() 
  103. {
  104.     UpdateData();
  105.     if(IsValidFileSpec(m_File1) && 
  106.         (IsValidFileSpec(m_File2)))
  107.     {    
  108.         CDialog::OnOK();
  109.     }
  110.     else
  111.     {
  112.         CString ErrMsg;
  113.         AfxFormatString2(ErrMsg, IDS_ERRFMT_INVALIDFILE, 
  114.                             m_File1, m_File2);
  115.         MessageBox (ErrMsg);
  116.     }
  117. }
  118.