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

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